해결된 질문
작성
·
324
0
안녕하세요. 영한님 강의를 보면서 실무에 처음으로 JPA를 도입해서 사용하고있습니다.
질문 내용은 페치조인시에 양방향으로 1:1 관계 매핑이 있는 엔티티의 경우 fetch type을 lazy로 설정하여도 즉시 조회 쿼리가 나가는 것 같아서 질문드립니다. 혹시 제가 설정을 잘못한 것인지 해결은 어떻게 해야할까요?
관계 구성은 간단하게 아래와 같습니다.
Order 조회시 Member를 fetch join 하면Member 와 1:1관계인 MemberDetail 조회 쿼리가 즉시 수행됩니다.
제가 작성한 예제 코드도 공유해드리겠습니다. 테스트 코드에 있는 테스트 케이스를 실행 시켜보시면 조회쿼리를 확인하실수 있습니다.
git clone https://sangholee_dev@bitbucket.org/sangholee_dev/one-to-one-test.git
추가로 이건 강의 범주를 넘어서는 질문같긴한데 테이블 설계시 1:1 관계가 옳은 설계인지 궁금합니다.
영한님은 혹시 실무에서 성향이 다른 데이터를 저장할때 정규화하여 1:1 관계로 설계하시는지 아니면 테이블은 분리하지 않고 객체만 나눠서 처리하시는지 궁금합니다.
답변 2
1
감사합니다. 강의 질문 답변을 조금 더 찾아봤어야 했네요.
실무에서 혼자 해결 할때는 default_batch_fetch_size 를 사용하는 것처럼 문제가 있는 1:1 관계로 매핑되어있는 엔티티들을 전부 fetch join 해서 쿼리가 한번만 더 수행되게 처리했습니다.
위 관계로 말씀드리면 Order를 조회하고 Member, MemberDetail, ProfileImage를 페치조인해서 Order에 member의 id로 찾아 넣어주는식으로 해서 1+1로 쿼리가 수행되게 했는데 알려주신 방법 5가지로 다시 한번 생각해보겠습니다.
그리고 테이블설계도 다시한번 생각해보겠습니다.
감사합니다.
0
안녕하세요. 상호님 좋은 질문입니다^^
JPA 단골 질문중에 하나인데요. 다음 링크를 확인해주세요^^
https://www.inflearn.com/questions/40670
감사합니다.