페치 조인의 단점은 무엇인가요?
페치 조인은
N + 1문제를 해결하는 데 유용하지만, 단점이 있다.둘 이상의 컬렉션은 페치 조인할 수 없다.
컬렉션 * 컬렉션이 되기 때문에
Cross Join이 되어버린다.
컬렉션을 페치 조인하면 페이징 API를 사용할 수 없다.
컬렉션을 페치 조인하면 일대다 조인이 발생해 데이터가 예측할 수 없이 증가하고, 다(
N)를 기준으로row가 생성된다.컬렉션을 페치 조인하고 페이징을 하면 하이버네이트는 경고를 남기면서 메모리에서 페이징 처리를 하는데, 이는 매우 위험하다.
ToOne관계는 페치 조인으로 가져오고, 나머지는@BatchSize나hibernate.default_batch_fetch_size로 해결할 수 있다.
Last updated