default_batch_fetch_size 는
지연로딩이 작동할때 작동하는 옵션으로
Collection 형태의 필드를 fetch join으로 즉시로딩해서 가져올때
일단 toMany를 join하기 때문에 결과값이 뻥튀기 되고 중복값을 제거하기 위해서 distinct가 필요하다.
거기다 페이징도 되지않게된다.
그래서 fetch join을 하지않고 collection을 지연로딩시키게 되는데
이 지연로딩이 발생할때 그 지연로딩 필드를 가진 엔티티 list를 받아오게 될것인데
그 엔티티에 id값을 모두 가져와 한번 지연로딩할때 IN절에 그 엔티티 ID 값들을 모두 넣고
지연로딩을 하게 된다. 이 역활을 해주는게 default_batch_fetch_size 이다.
이렇게 하면 지연로딩은 발생해서 쿼리는 한번 더 작동하지만 최소한의 작동만으로 해결이 가능하다.
이 상태에서는 페이징 사용이 가능하다.
(to One 에만 fetch join이 사용되었기 때문)
default_batch_fetch_size에 설정해둔 값만큼 IN절에 ID값을 넣을수 있는데 최대 1000개 이다.
'JPA' 카테고리의 다른 글
| 3월 7일 JPA OSIV 와 성능최적화 (0) | 2023.03.07 |
|---|---|
| 3월 6일 JPA API 개발 고급 정리 (0) | 2023.03.06 |
| 3월 6일 JPA 주문조회 V6 (0) | 2023.03.06 |
| 3월 6일 JPA 주문조회 V5 (0) | 2023.03.06 |
| 3월 3일 JPA 주문조회 v4 (0) | 2023.03.03 |