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에는 어떻게 배치 사이즈를 적용하는지 알려주시면 감사하겠습니다
참고 :글로벌 배치 사이즈는 잘 먹습니다!
Answer 1
0
안녕하세요. 안상혁님
제가 지금 기억이 정확하지 않은데, 엔티티 자체에 @BatchSize를 걸어보시면 잘 동작할꺼에요.
참고로 실무에서는 글로벌 옵션을 주로 사용합니다.
감사합니다.