spring.jpa.properties.hibernate.default_batch_fetch_size

application.properties

 

default batch fetch size

JPA에서 default_batch_fetch_size 는 지연로딩되는 쿼리를 IN 으로 묶어 한번에 보내는 기능입니다. 조회 시 성능을 개선하는 방법중 하나죠.

 

 

 

List<Order> orders = orderRepository.findAll();
orders.forEach(order -> System.out.println(order.getMember().getName()));

예를들어, 위와 같은 로직이 있을때 orders의 사이즈가 100이고, Member는 fetch=LAZY 이라고 가정해보겠습니다.

 

order.getMember().getName()을 호출하면 영속성 컨텍스트에 데이터가 없기때문에 먼저 쿼리가 나가고 영속성 컨텍스트에 저장됩니다. Member의 중복이 없다면 이 과정에서 100번 반복되어 총 쿼리는 최대 101번이 나갈 수 있게되는것입니다.

 

여기에서 default_batch_fetch_size=100 라고 설정해준다면 지연로딩되는 member를 IN절로 100개까지 묶어 한번에 모두 가져와 컨텍스트에 넣게됩니다. 그러면 이 경우에 2번의 쿼리만 발생하게됩니다.

 

따라서 default_batch_fetch_size를 적절하게 설정해놓는것이 좋겠습니다.

'FrameWork > JPA' 카테고리의 다른 글

[JPA] Open Session In View  (0) 2024.11.10
JPA 스키마 자동 생성  (0) 2023.11.17

+ Recent posts