안녕하세요 JPA 를 학습하며 casacade 와 Fetch 조인을 적용해보고 있었습니다.
먼저 저는 POST 와 Comment Entity 들을 이용해서 이들의 관계를 1:N 관계로 보고 스터디를 진행했습니다.
그리고 이제 POST 를 조회할 때 Comment 를 가져오는 것을 LAZY 속성을 준 뒤 Fetch Join 으로 한 방에 조회 할려고 했습니다.
다름이 아니라 이 과정은 매우 성공적으로 잘 이행 되었습니다. 근데 문제는 여기서 발생했습니다. 보통 POST가 최초 posting 되면 당연히 comment는 null 일 것입니다. 이제 comment 저장을 위해 POST 를 findById() 를 통해서 찾아봤습니다. (POST 와 연관관계를 맺어주기 위해서 입니다.) 그런데 여기서는 LAZY 옵션 때문에 조회에 실패합니다.
아 그래서 여기서도 FetchJoin 을 사용해서 가져와야 하고 Fetch Join을 사용하는 메서드를 실행했습니다. 그러니까 이번에는 조회되는 POST 가 Null 이 나옵니다.
선배님들 이럴땐 어떻게 해결 해야할 까요 코드와 에러는 아래에 공개하겠습니다.
POST Entity
Comment Entity
테스트 코드
- findById 로 조회시 Lazy 옵션으로 인한 no Session 이슈
Fetch Join 을 이용한 조회
저장되어 있는 Comment 가 없기 때문에 조회되는 POST 가 없어서 NullPoint 이슈
마지막으로 Fetch Join 메서드
이상 입니다. 잘못된 개념이나 잘못된 코드 등등 잘못을 지적해주신다면 정말 감사하겠습니다.