SPRING/JPA

@EntityGraph 사용법

공기팝님 2021. 12. 6. 19:34
반응형

EntityGraph는 

페치 조인(FETCH JOIN)의 간편 버전이라고 생각하면 됩니다. 

EntityGraph의 4가지 사용법을 알아보겠습니다.

 

  [ 이전 글(페치조인 설명)을 꼭  참고해주세요. ]

 

저번 시간에 이어 먼저 MemberRepository를 살펴보겠습니다.

첫 번째 방법

MemberRepository 추가1

27라인을 보시면 엔티티 그래프가 추가 되었습니다.
이전과는 달리 [ @Query("...") 페치 조인을 위한 JPQL쿼리를 ] 짜지 않고 @EntityGraph를 이용하여 페치 조인을 사용할 수 있습니다. 

 

바로 테스트해보겠습니다.

EntityGraph 사용1

결과 

EntityGraph테스트 결과(1)

이전 페치조인과 동일한 결과를 얻을 수 있습니다.

 


 

두 번째 방법

MemberRepository 추가2

31라인을 보시면 엔티티 그래프 사용 두 번째가 추가되었습니다.
이번에는 JPQL과 엔티티 그래프를 같이 사용하는 방법입니다.

테스트

EntityGraph 사용2

결과

EntityGraph테스트 결과(2)

 


세번째 방법

MemberRepository 추가3

36라인을 보시면 엔티티 그래프가 되었습니다.
이번에는 메서드 이름으로 쿼리를 조회해오는 기능을 사용하였습니다.  (잘 모르신다면 https://kihwan95.tistory.com/5 참고해주세요.)

테스트

EntityGraph 사용3

결과

EntityGraph테스트 결과(3)

 


네번째 방법(NamedEntityGraph 사용)

이번에는 Member엔티티에 속성을 추가해야 합니다.

Member 엔티티에 @NamedEntityGraph추가

20라인 -@NamedEntityGraph(name ="Member.findAllBy", attributeNodes = @NamedAttributeNode("team")) //추가

MemberRepository 추가4

41라인을 보시면 엔티티 그래프가 되었습니다.

테스트

EntityGraph 사용4

결과

EntityGraph테스트 결과(4)

 

지금까지 페치 조인과 같은 역할을 하는 @EntityGraph를 알아보았습니다.

그런데 @EntityGraph는 left join만 지원합니다. 

그래서 다른 방식이 필요하면 JPQL을 작성하고 fetch join을 직접 사용해야 합니다.

 

참고 : https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%EB%8D%B0%EC%9D%B4%ED%84%B0-JPA-%EC%8B%A4%EC%A0%84/dashboard (김영한님)

반응형