Notice
Recent Posts
Link
Tags
- 스프링부트
- PYTHON
- spring security 6
- SSL
- java
- 프로그래머스
- nginx
- jpa
- static
- spring
- @transactional
- join
- hibernate
- 자바
- mysql
- sql
- AWS
- 문자열
- ORM
- 1차원 배열
- 스프링
- Docker
- spring mvc
- 데이터베이스
- spring boot
- string
- springboot
- select
- DI
- Django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Archives
목록N+1 (1)
개발하는 자몽
[Spring Data JPA] 하이버네이트 Batch Size
상황1:N 관계가 얽혀있는 엔티티를 대상으로 Spring Data JPA를 이용해서 Pagination 조회를 하니 말로만 듣던 N+1 상황이 발생했다. 처음에는 일반적인 해결 방법인 Fetch Join을 사용하려고 했다. 더불어 중복을 방지하기 위해 `DISTINCT` 추가하려고 했다. 그러나 1:N 관계의 컬렉션을 Fetch Join 하면서 동시에 Pagination을 사용하는 것은 OutOfMemoryError가 발생할 수 있고, 이로 인해 `DISTINCT`를 적용할 수 없다고 한다. 그래서 찾은 다른 방법 중 가장 빠르고 쉬운 방법은 Batch Size를 설정하는 것이었다. 하이버네이트 Batch Size 하이버네이트에서 제공하는 `@BatchSize` 애노테이션이나 `batch_size`..
Java & Kotlin/Spring
2024. 11. 25. 16:42