[TIL] Spring Boot 공부 4 : @EntityGraph

Spring Data JPA - LazyInitialization 에러

  • Fetch 방식이 LAZY이기 때문에 발생.
  • 해결 방법
    • @Transactional 적용 (각 처리마다 로딩해야되는 단점)
    • @Query를 이용해서 조인 처리
    • @EntityGraph를 이용

@EntityGraph의 속성

  • attributePaths : 로딩 설정을 변경하고 싶은 속성의 이름을 배열로 명시
  • type : @EntityGraph를 어떤 방식으로 적용할 것인지를 설정
    • FETCH : attributePaths에 명시한 속성은 EAGER로 처리, 나머지는 LAZY로
    • LOAD : attributePaths에 명시한 속성은 EAGER로 처리, 나머지는 엔티티 클래스에 명시되거나 기본방식으로 처리
1
2
3
// 사용 예
@EntityGraph(attributePaths = { "member" }, type = EntityGraph.EntityGraphType.FETCH)
List<Review> findByMovie(Movie movie)