-
@EntityGraph 사용법SPRING/JPA 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을 직접 사용해야 합니다.
반응형'SPRING > JPA' 카테고리의 다른 글
페치조인(fetch Join )이란 (6) 2021.12.03 Spring Data JPA(쿼리 메소드) (0) 2021.10.11 JPA(Java Persistence API)동작 방식 (0) 2021.10.10 JPA(Java Persistence API)의 시작 (6) 2021.10.10