
[JPA] 실전! 스프링 부트와 JPA 활용 2 - 섹션 5~6
·
JPA
컬렉션 조회(OneToMany) 최적화Fetch Join의 한계2개 이상의 컬렉션 fetch join이 불가능하다. 컬렉션 페치 조인은 1개만 사용할 수 있다. 2개 이상의 컬렉션을 fetch join하게 된다면, 카테시안 곱으로 처리하기 때문에 너무 많은 값이 메모리로 들어와 MultipleBagFetchException이 발생하게 된다.컬렉션 fetch join일 경우, 페이징이 불가능하다. 조인 시에 ‘多’ 엔티티의 데이터 개수에 맞추어 데이터가 중복되어 생성되기 때문에 페이징 기준이 틀어져 페이징이 불가능하다. 엄밀히 말하면, 가능하지만 절대 페이징 처리를 해서는 안된다. 컬렉션 페치 조인 시 페이징처리를 하게 되면, 하이버네이트는 경고 로그를 남기면서 모든 데이터를 DB에서 읽어오고 메모리에서 ..