@OneToMany에서 fetch join과 페이지네이션 API 함께 사용하면 어떤 일이 발생할까요? #201
Replies: 4 comments
-
batch size |
Beta Was this translation helpful? Give feedback.
-
들어가기 앞서
xxToOne 관계에서의 Fetch Join와 페이징
xxToMany 관계에서의 Fetch Join와 페이징
Fetch Join와 페이징을 같이 사용하기 위한 방법
ref. |
Beta Was this translation helpful? Give feedback.
-
이유는 만약 부모 엔티티가 3개 있고, 각각의 부모 엔티티는 연관된 자식 엔티티가 7개 존재한다고 가정해봅시다. 1:N 관계를 Join하면 총 21(3 * 7)개의 DB Row가 조회됩니다. 데이터의 수가 변경되기 때문에 단순하게 LIMIT 구문을 사용하는 쿼리로 페이지네이션을 적용하기 어렵습니다. 따라서 조회한 결과를 모두 메모리로 가져와서 JPA가 페이지네이션 계산을 진행합니다. 그래서 페이징할 때 사용하던 기존의 SQL LIMIT 구문이 등장하지 않고, 쿼리 결과를 전부 메모리에 적재한 뒤 어플리케이션 단에서 Pagination 작업을 수행한다는 경고 로그가 발생합니다. 이를 해결하기 위해 배치 사이즈를 설정할 수 있습니다. |
Beta Was this translation helpful? Give feedback.
-
https://tecoble.techcourse.co.kr/post/2021-07-26-jpa-pageable/ |
Beta Was this translation helpful? Give feedback.
-
뭘까용
Beta Was this translation helpful? Give feedback.
All reactions