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

김세희님의 프로필 이미지
김세희

작성한 질문수

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

주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화

batchsize와 in 쿼리 관련해서 질문드립니다.

작성

·

154

0

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]
order와 orderItem의 예시의 경우

스트림의 map으로 order를 OrderDto로 바꾸는 과정에서 OrderDto의 생성자로 order 객체가 들어간 후 oderItem.getItem().getName()을 호출하면서 in 쿼리가 나가는 것 같은데 여기서 이해가 안 가는 부분이 있습니다.

 

  1. 조회된 order의 컬렉션이 매개변수로 넘어가는 것도 아니고 스트림은 원소를 하나씩 처리하는 것으로 알고 있는데 어떻게 조회된 모든 order의 아이디를 알고 in절 안에 넣을 수 있는 것인가요?

  2. 강의를 보면 orderItem을 찾는 in 쿼리가 한 번만 나가는데 이건 첫 in 쿼리를 통해 모든 정보를 조회해서 이후에는 1차 캐시에서 조회 가능하기 때문에 그런 것인가요?

답변 2

0

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 김세희님

도움을 드리고 싶은데, 정확히 어떤 내용을 질문하시는지 파악이 어렵습니다.

다음 2가지 내용을 추가해주시면 좋겠습니다.

  1. 혹시 강의 영상의 몇 분에서 설명하는 내용일까요? 강의 내용에 나오는 화면과 내용을 캡쳐해서 올려주시면 질문을 파악하는데 도움이 됩니다. 최대한 많은 정보를 올려주세요.

  2. 추가로 다음 내용을 참고해서 현재 상황을 파악할 수 있는 실행 가능한 코드를 함께 올려주세요.

     

실제 동작하는 전체 프로젝트를 압축해서 구글 드라이브로 공유해서 링크를 남겨주세요.

구글 드라이브 업로드 방법은 다음을 참고해주세요.

https://bit.ly/3fX6ygx

 

주의: 업로드시 링크에 있는 권한 문제 꼭 확인해주세요

 

추가로 다음 내용도 코멘트 부탁드립니다.

1. 문제 영역을 실행할 수 있는 방법

2. 문제가 어떻게 나타나는지에 대한 상세한 설명

 

링크: 공식 서포터즈

링크: 자주하는 질문

감사합니다.

-1

안녕하세요, 인프런 AI 인턴입니다.

김세희님께서 질문하신 batchsizein 쿼리 관련해서 궁금증을 해소할 수 있을 것 같은 관련 질문 링크를 찾아드렸습니다.

  1. default_batch_fetch_size의 원리가 궁금합니다!

    • 본 질문에서는 default_batch_fetch_size 설정을 통해 특정 수의 엔티티를 미리 조회함으로써 지연 로딩의 성능을 개선하는 방법에 대해 이야기합니다. 스트림을 사용하여 엔티티를 순회하며, 설정된 배치 사이즈에 맞게 미리 데이터를 조회하는 과정이 어떻게 진행되는지 설명되어 있습니다. 이는 김세희님께서 질문하신 첫 번째 질문, 즉 스트림을 통한 처리 과정 중 in 쿼리가 어떻게 여러 ID 값을 포함할 수 있는지에 대한 이해를 돕는데 유용할 것입니다.
  2. Batch Size에서 두 번째 Order의 ID가 IN 쿼리에 들어가는 이유

    • 이 질문은 특정 엔티티의 지연 로딩 과정에서 in 쿼리가 어떻게 구성되고 실행되는지에 대한 특정 사례를 다룹니다. in 쿼리의 구성 방식과 실행 시점, 그리고 1차 캐시의 역할에 대해 더 깊이 이해할 수 있도록 도와줍니다. 김세희님의 두 번째 질문에도 도움이 될 내용입니다.

이 두 질문 링크를 통해, 스트림을 사용하여 하나의 엔티티로부터 연관된 다른 엔티티를 조회할 때 in 쿼리가 어떻게 여러 아이디 값을 포함하여 작성되며, 이 과정에서의 1차 캐시의 역할에 대해 더 확실하게 이해하실 수 있기를 바랍니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김세희님의 프로필 이미지
김세희

작성한 질문수

질문하기