인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

코린코린's profile image
코린코린

asked

Real-world! Spring Boot and JPA Utilization 2 - API Development and Performance Optimization

Order Lookup V3.1: Converting Entities to DTOs - Paging and Breaking Limits

ManyToOne에서 @BatchSize가 동작하지 않습니다 ㅠㅠ

Written on

·

539

0

안녕하세요. 항상 좋은 강의, 답변 주셔서 감사합니다.

이번에 여쭤보고 싶은 것은 @BatchSize가 동작하지 않는 부분에 대해서입니다.

<Order의 OrderItems> BatchSize 100 설정

@BatchSize(size = 100)
@OneToMany(mappedBy = "order", fetch = FetchType.LAZY, cascade = CascadeType.ALL) // order가 만들어지면 orderItem이 만들어지기 때문에 영속성 전이한다.
private List<OrderItem> orderItems = new ArrayList<>();

<OrderItems의 Item> BatchSize100 설정

@BatchSize(size = 100)
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "item_id")
private Item item;

위와 같이 설정을 했는데, 실제로 배치가 적용되는 것은 아래 쿼리를 확인하시면 아시겠지만 OrderItems에만 적용이 됩니다. 

 

item는 배치 사이즈가 적용이 되지 않아 총 4번이 나가게 되고, OrderItem은 배치 사이즈가 적용되어 1번의 쿼리만 나갑니다.

 

다른 엔티티에도 적용해보니 정황상 ManyToOne, OneToOne 관계에서 배치 사이즈가 안 먹는거 같은데.. 혹시 item 같은 ManyToOne에는 어떻게 배치 사이즈를 적용하는지 알려주시면 감사하겠습니다

 

참고 :글로벌 배치 사이즈는 잘 먹습니다! 

 

 

 

 

 

 

 

 

spring-bootspringJPAjava

Answer 1

0

yh님의 프로필 이미지
yh
Instructor

안녕하세요. 안상혁님

제가 지금 기억이 정확하지 않은데, 엔티티 자체에 @BatchSize를 걸어보시면 잘 동작할꺼에요.

참고로 실무에서는 글로벌 옵션을 주로 사용합니다.

감사합니다.

코린코린's profile image
코린코린

asked

Ask a question