흥미로워라
hibernate.jdbc.batch_size
spring:
jpa:
properties:
hibernate:
jdbc:
batch_size: 50 # 한 번에 50개의 INSERT, UPDATE 작업을 묶어서 처리
hibernate.jdbc.fetch_size
fetch_size
만큼 나눠서 로드해서 메모리 사용량을 줄이고, 쿼리 성능을 개선할 수 있음.spring:
jpa:
properties:
hibernate:
jdbc:
fetch_size: 100 # 한 번에 100개의 레코드를 가져옴
@BatchSize
@Entity
public class GrandEntity {
@OneToMany(mappedBy = "grand")
@BatchSize(size = 20) // 한 번에 20개의 'parents' 엔티티를 가져옴
private List<ParentsEntity> parents = new ArrayList<>();
}
옵션 | 목적 | 주요 용도 | 설정 위치 | 효과 |
---|---|---|---|---|
hibernate.jdbc.fetch_size | 쿼리 결과의 배치 크기를 설정 | 대용량 조회 성능 최적화 | application.yml | 대용량 조회 시, 한 번에 가져오는 레코드 수를 줄여 메모리 사용을 최적화함. |
hibernate.jdbc.batch_size | 쓰기 작업(INSERT, UPDATE)의 배치 크기 설정 | 대량 삽입/수정 성능 최적화 | application.yml | 여러 개의 쿼리를 묶어서 한 번에 처리하여 데이터베이스에 대한 부하를 줄임. |
@BatchSize | 연관된 엔티티의 배치 크기 설정 | 연관된 컬렉션 로딩 시 성능 최적화, N+1 문제 해결 | 엔티티 클래스의 연관 관계 필드에 설정 | 연관된 엔티티를 효율적으로 로딩하여 N+1 문제를 해결하고 성능을 향상시킴. |