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

김영빈님의 프로필 이미지
김영빈

작성한 질문수

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

간단한 주문 조회 V2: 엔티티를 DTO로 변환

13:50쯤부터 EAGER로 변경하고 나서 N+1 동작 질문있습니다

해결된 질문

작성

·

408

0

fetchtype을 LAZY로 설정했을 경우 N+1문제는 이해했습니다.

 

그런데 EAGER의 경우 Order를 위한 1개의 select쿼리 뒤에 delivery를 위한 1개의 쿼리와 3중 조인문 2개의 쿼리가 나가고 있는데 (위 사진)

 

  1. join문이 EAGER처리를 위한 쿼리라면 왜 order 조회쿼리 뒤에 바로 나가지 않고 delivery 조회쿼리가 한번 나간 뒤에 나가는건지

     

  2. 왜 delivery에 대한 추가 쿼리는 나가는데 member는 조회쿼리가 나가지 않고 join문이 나가는지

     

  3. EAGER의 경우에도 모든 연관객체가 영속성 콘텍스트 안에 존재하지 않는다면 정확히 1+N개의 쿼리가 나가는지 (=LAZY와 똑같이 1+N개의 쿼리가 나가는지)

 

이 세가지가 이해되지 않습니다.

EAGER일때 쿼리를 이해해보려고 노력했는데 "LAZY와는 추가쿼리(N)가 나가는 시점의 차이가 있다" 정도 말고는 이해가 되지 않아 질문드립니다.

답변 1

1

김영빈님의 프로필 이미지
김영빈
질문자

궁금하기는 한데 https://www.inflearn.com/questions/710275 이거보고 그냥 넘어가기로 했습니다

김영빈님의 프로필 이미지
김영빈

작성한 질문수

질문하기