JPA/Fetch join

JPQL 페치 조인 (fetch join) - ②

수달하나 2021. 7. 24. 18:51

페치 조인의 특징과 한계

 

  • 페치 조인 대상에는 별칭을 줄 수 없다. 하이버네이트는 가능하지만 가급적 사용하지 않는다.
  • 둘 이상의 컬렉션은 페치 조인 할 수 없다.
  • 컬렉션을 페치 조인하면 페이징 API를 사용 할 수 없다. .setFirstResult(), .setMaxResults() 사용 불 가능

 

이러한 한계에도 불구 하고 연관된 엔티티들을 SQL 한 번으로 모두 가져올 수 있기 때문에 좋은 성능을 내기 위해서 사용하고 있다. 따라서 성능 최적화가 필요한 곳은 페치 조인을 적용한다.

 

 

fetch join 정리

 

모든 것을 페치 조인으로 처리할 수 는 없다.

페치 조인은 객체 그래프를 유지할 때 사용하면 효과적이다.

여러 테이블을 조인해서 엔티티가 가진 모양이 아닌 전혀 다른 결과를 내야 한다면, 페치 조인보다는 일반 조인을 사용하고 필요한 데이터들만 조회해서 DTO로 반환하는 것이 효과적이다.