인프런 커뮤니티 질문&답변
BatchSize와 OneToMany에 대해 질문드립니다.
작성
·
170
0
안녕하세요. 좋은 강의 정말 잘 듣고있습니다.
컬렉션 조회 최적화 - 페이징과 한계 돌파편을 보다가 궁금한 점이 생겨서 질문드립니다.
BatchSize = 100 설정 시 다대일 관계에서는 BatchSize에 설정한 만큼 100개의 데이터를 조회하는데
일대다 관계에서는 컬렉션의 크기에 따라 조회되는 데이터 크기가 굉장히 많을 수도 있어 보입니다.
이전에 예제로 사용하셨던 Team과 Member 클래스로 예를 들면
[ ManyToOne 매핑 ]
[ 사용 시 ]
위 처럼 Member 엔티티로 다대일 관계를 갖는 team에 접근하는 경우 BatchSize에 의해 최대 100개의 팀을 조회합니다.
쿼리도 생각한대로 실행되고..
그런데 아래처럼 Team 엔티티로 일대다 관계인 members 컬렉션에 접근하면
[ OneToMany 매핑 ]
[ 사용 시 ]
이런 쿼리가 실행되더라구요. 만약 해당 팀에 소속된 회원이 10000명이라 치면 10000명이 다 조회되는건가요?
애초에 실무에선 저렇게 설계하면 안되는건지, 그런건 Member를 조회하며 페이징해서 사용해야 되는지, 아니면 다르게 튜닝하는 법이 있는지 궁금해서 질문드립니다.
( 관계를 반대로 써놨었네요. 수정했습니다. )





