강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

InJun Choi님의 프로필 이미지
InJun Choi

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

BatchSize와 OneToMany에 대해 질문드립니다.

작성

·

170

0

안녕하세요. 좋은 강의 정말 잘 듣고있습니다.

컬렉션 조회 최적화 - 페이징과 한계 돌파편을 보다가 궁금한 점이 생겨서 질문드립니다.

BatchSize = 100 설정 시 다대일 관계에서는 BatchSize에 설정한 만큼 100개의 데이터를 조회하는데

일대다 관계에서는 컬렉션의 크기에 따라 조회되는 데이터 크기가 굉장히 많을 수도 있어 보입니다.

 

이전에 예제로 사용하셨던 Team과 Member 클래스로 예를 들면

[ ManyToOne 매핑 ]

[ 사용 시 ]

위 처럼 Member 엔티티로 다대일 관계를 갖는 team에 접근하는 경우 BatchSize에 의해 최대 100개의 팀을 조회합니다.

쿼리도 생각한대로 실행되고..

그런데 아래처럼 Team 엔티티로 일대다 관계인 members 컬렉션에 접근하면

[ OneToMany 매핑 ]

[ 사용 시 ]

이런 쿼리가 실행되더라구요. 만약 해당 팀에 소속된 회원이 10000명이라 치면 10000명이 다 조회되는건가요?

애초에 실무에선 저렇게 설계하면 안되는건지, 그런건 Member를 조회하며 페이징해서 사용해야 되는지, 아니면 다르게 튜닝하는 법이 있는지 궁금해서 질문드립니다.

( 관계를 반대로 써놨었네요. 수정했습니다. )

답변 1

0

안녕하세요. InJun Choi님, 공식 서포터즈 David입니다.

이런 경우는 말씀하신대로 별도로 Member를 조회하고, 조회할 때 페이징 처리 해야 할 것 같습니다.

감사합니다.

InJun Choi님의 프로필 이미지
InJun Choi

작성한 질문수

질문하기