페치 조인의 단점은 무엇인가요?

  • 페치 조인N + 1 문제를 해결하는 데 유용하지만, 단점이 있다.

  • 둘 이상의 컬렉션은 페치 조인할 수 없다.

    • 컬렉션 * 컬렉션이 되기 때문에 Cross Join이 되어버린다.

  • 컬렉션을 페치 조인하면 페이징 API를 사용할 수 없다.

    • 컬렉션을 페치 조인하면 일대다 조인이 발생해 데이터가 예측할 수 없이 증가하고, 다(N)를 기준으로 row가 생성된다.

    • 컬렉션을 페치 조인하고 페이징을 하면 하이버네이트는 경고를 남기면서 메모리에서 페이징 처리를 하는데, 이는 매우 위험하다.

    • ToOne 관계는 페치 조인으로 가져오고, 나머지는 @BatchSizehibernate.default_batch_fetch_size로 해결할 수 있다.

Last updated