인프런 커뮤니티 질문&답변

@Todo님의 프로필 이미지
@Todo

작성한 질문수

실전! Querydsl

중첩된 fetch join

작성

·

462

0

안녕하세요

fetch 조인 문의가 있습니다. 

class A {
@ManyToOne
private B b;

@ManyToOne
private D d;
}

class B {
@ManyToOne
private C c;
}

class C {
...
}

class D {
...
}

A클래스를 조회하면서 관련된 연관관계인 B, C, D 를 모두 한번에 fetch 조인이 가능한가요 ?

안된다면 이런경우를 어떻게 해결하는지 문의 드립니다. 

감사합니다. 

답변 4

0

김영한님의 프로필 이미지
김영한
지식공유자

기본적으로 EntityGraph는 JPA가 제공하는 것인데, 스프링 데이터 JPA에서 이것을 편리하게 사용하게 도와줍니다. EntityGraph는 하나이상의 하위 fetch join이 가능합니다.

그런데 하나 이상의 하위레벌이 들어가면 이미 조인쿼리가 너무 복잡해지기 때문에 최적화가 어려울 수 있습니다. 따라서 @EntityGraph를 쓰기 보다는 명시적으로 fetch join을 사용하는 것을 권장합니다.

0

@Todo님의 프로필 이미지
@Todo
질문자

Spring data jpa에서 @EntityGraph 를 통해서도 하나이상의 하위레벨의 fetch join이 가능한가요 ?

0

@Todo님의 프로필 이미지
@Todo
질문자

감사합니다. 

0

김영한님의 프로필 이미지
김영한
지식공유자

네 가능합니다!

다음처럼 하면 됩니다^^

from A a

join fetch a.b b

join fetch b.c c

활용 2편에 이 내용을 매우 자세히 다루고 있으니 참고해주세요^^

@Todo님의 프로필 이미지
@Todo

작성한 질문수

질문하기