소개
게시글
질문&답변
엔티티매니저 동시성 문제
아 그렇군요! 학교에서 native jdbc만 사용하다가, jpa를 접하니 헤어나올 수 없도록 재밌습니다.
- 0
- 3
- 292
질문&답변
실습도중 실수로 onetoone에다가 many로 넣어버렸는데 데이터가 들어가집니다.
이해했습니다. 결국 물리적으로 데이터베잇에 직접 하이버네이터가 unique 제약조건을 걸어둘거라고 착각을 한 제 잘못입니다. 다시 생각을 해봐도 OneToOne 매핑 해줬다고 제약조건 까지 걸어줘 버리는건, 개발자가 예상치 못한 제약조건이 들어가버린 다는 뜻이되니, 다음과 같이 어느정도 허용은 해주는게 맞는 것 같습니다. 유니크 말고도 여러가지 방법이 있다는 점이 재밌어지네요. 제 생각에도 유니크만이 최선의 방법이라고 생각하지는 않습니다. 결국 unique때문에 데이터베이스 에서 예외처리가 나온다면, 개발자가 의도한 바가 맞을 수 있겠지만, 로그에 error stack trace가 쭉쭉 올라가고 나중에 서버를 올렸는데, unique 제약조건 때문에 다른에러랑 구분하기 힘들정도로 가독성이 떨어지는 경우도 무시할 수는 없겠고요. 그래서 데이터를 디비에 직접 저장하기전에, 쿼리를 먼저 날려서 지접 자바코드로 데이터의 중복이 있는지 없는지 알려주는 방법도 있을 수 있다고 생각합니다. 하지만 데이터를 넣기전에 쿼리를 날려서 직접 유니크 제약조건을 체크해준다는 것도, 성능을 고려했을 때에는, 좋은 방법은 아니라고 생각합니다. 어려우면서 재밌어지네요. ^^ 혹시 다른분들도 저랑 같은 생각을 할 수 도 있으니 제가 한번 정리해 보았습니다. 답변 달아주셔서 감사합니다.
- 2
- 4
- 339
질문&답변
Optional 질문
네 제가 예시를 처음부터 잘못적었고, 질문 자체도 모순이 좀 많았습니다. 질문의 의도는 결국 npe를 왜 발생시키냐였습니다. getProgress() 를 출력하면 null을 반환하고 getProgress().getDuration() 는 npe 가 발생하느냐 였습니다. 그냥 null을 주면 되는데 말이죠. 여기서 깊게 고민을 해봤고 다음과 같은 결론이 나왔습니다. 곰곰히 생각을 해보다가 이유를 알았고 블로그에 처음으로 생각을 정리하는겸 글을 적어봤습니다. https://catch-me-java.tistory.com/2 사실 optional 강좌에 이런질문을 하는 것도 좀 이상했었네요. ㅠㅠ 강의 잘보고 유튜브도 잘 보고있습니다. 늘 감사합니다.!
- 2
- 3
- 264
질문&답변
Self-refrence
주말인데 이렇게 직접 답을 달아주셔서 너무 감사합니다. !
- 0
- 2
- 213