본문 바로가기
DailyLife/Dev blahblah

삽질 모음

by Dev Lighthouse 2021. 7. 12.
320x100
320x100

Jpa 연관 관계 메서드 작성하는데 2시간을 날렸다

물론 이전에 해본적이 있어서 메서드는 잘 작성했는데 안되길래 왜안되나.....했다 나는 김영한님의 JPA책을 보고 따라 쳤는데

결론: List 초기화를 안해줘서 널포인터익셉션이 떴다 ㅡㅡ;; 

예외로 e.stacktrace랑 메세지를 안날려줘서 디버깅으로 찾아냈다. 진짜 난 개 멍청이

 

추가로 예전에 했던 실수를 적어보겠다 다시 하지 않길 바라며...

@Transactional을 붙여야 Spring Data Jpa에서는 update쿼리가 날라가서 반영이된다.

근데 이 비즈니스 로직 자체를 서비스단이 아닌 도메인 엔티티가 적힌 밑에 만들어놔서

분명히 글을 조회하면 조회수가 1늘어야되는데 늘지를 않는것이다.

문제를 찾고 찾고 찾고 찾았는데 안나와서 생각해보니까 서비스단 위에 @Transactional을 안붙였었다...

이게 서비스 레이어에서 조회수가 늘어나게 하는 코드가 있던 것이 아니라 오류를 못찾았었다.

추가로 이때 코딩 실력이 진짜 형편없었어서(지금도 마찬가지).. 또 내가 무슨 실수를 했나 찾느라 시간을 다 보냈다.

참고로 어노테이션이 이래서 무서운거같다. 에러로 내뱉지않고 뭐 빠뜨린지 봐야하니깐..!

 

그리고 진짜어이없는 실수들 또 적어보면 이건 프로젝트급은 아니고 예제 실행할때... H2나 MySQL을 할때 에러가 난적이있다.

인터넷에 검색해보니까 MySQL은 조금 오랜시간동안 커넥션이 없으면 자동으로 연결을 끊는?다고했나라고 적혀있었다. 그래서 상태확인 쿼리를 먼저 날리고 커넥션을 해야한다고...

어찌됏든 하라하는거 다~~~~해봤는데도 안되서 확인해보니까

맥에서 mysql.server start를 안해준거였다 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

도커 가상화로 이미지 심을라니깐 나름 초보한테는 어려웠고...(루트에서 쓰는게 아니다보니까 아이디, 패스워드를 바꿔줘야함.. 도커 컨피config에서..) 그리고 여러 프로그램이 의존하는게 아니라 db하나만 쓸거면 올리는거보다 커맨드로 한번 치는게 더 빨라서 안했다

윈도우를 쓸때는 mysql 서버가 계속 돌아갔던 기억이 있던 것도 있고 내가 참 장..아니다 이쁜말써야지.. 실수가 많아서 그런것같다

 

근데 실수를 한다고 자책할게 아니라, 그 즉시 감정에 빠져있기보다 짧은코드라면 디버그모드로 라인 타고 내려가면서 에러 확인하고 빨리 디버깅 하는게 답인거같다

요즘 스터디는 꾸준히해서 스프링은 4장, 모던은 6장까지 나갔고 개인적으로 디자인패턴, JPA도 공부하는중이다..

여러 가지로 공부하다보니까 포스팅 할 짬이 안나서 ...ㅎㅎㅎ

루틴에 블로깅도 좀 추가해서 공부했던것들 정리도 나름 꾸준히 해야겠다!!

 

+ 하이버네이트에서 테이블 이름을 Order로 했더니 예제가 실행이 안됐다. 결국 @Table(name="ORDERS")로 바꿔준 뒤에야 실행이 되었는데...허허 책대로 따라했는데 에러가 많은것같다 ㅠㅠ

expected "identifier"; SQL statement:

 

+ stream has already been operated upon or closed

스트림API는 한번만 호출할 수 있게 설계 되어있다. 스트림은 매번 새로운걸 만들어서 써야한다!

320x100

댓글