@BatchSize
-
페치 조인의 한계과 극복(요약 ver.)개발/JPA 2023. 7. 25. 15:14
JPA를 사용할 때 fetchType은 기본적으로 LAZY로 지정하고 시작한다. EAGER는 최적화가 제한되기 때문에 선택지에서 아예 제외하도록 하자. OneToOne, ManyToOne(이하 XxxToOne)은 조인을 해도 결과 데이터 수가 늘어나지 않는다. 일대다 조인을 하면 다(N)에 맞춰서 데이터가 늘어나게 된다(데이터 뻥튀기). 팀과 멤버가 일대다 관계라고 했을 때, 팀과 멤버를 조인하게 되면 멤버 데이터에 팀이 합쳐진 데이터가 출력된다. 엔티티를 로딩할 때 XxxToOne 데이터는 페치 조인으로 데이터를 Query 한 번으로 가져와 성능 최적화를 할 수 있지만, 문제는 컬렉션이다. 페치 조인을 하게 되면 그 뻥튀기 된 데이터가 전부 조회된다. SQL 단계에서 당연히 distinct도 적용 안 ..