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

별볼일있는 개발자님의 프로필 이미지
별볼일있는 개발자

작성한 질문수

실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)

29강. N+1 문제를 해결하는 방법! fetch join

쿼리에 fetch 쓰는 부분

작성

·

272

1

쿼리에 fetch 쓰는 부분과

 

Entity 자체에서

 

FetchType.LAZY 써주는것과

 

같은 방법으로 볼 수 있을까요?

답변 1

0

최태현님의 프로필 이미지
최태현
지식공유자

안녕하세요, 별볼일있는 개발자님! 질문 남겨주셔서 감사합니다! 😊

 

  • 쿼리에 fetch를 쓰는 것 (fetch join)

  • Entity에서 옵션으로 FetchType.LAZY 를 주는 것

 

은 다른 설정이라고 봐주시면 될 것 같아요! (즉 다른 방법입니다!)

 

차이점을 설명드려보면 다음과 같습니다! A Entity와 B Entity가 1 : N 관계라고 해볼게요!

FetchType.LAZY 를 사용하게 되면, A Entity를 가져올 때 B 엔티티까지 가져오지 않고, B 가 정말 필요해진 순간, B 데이터를 가져오죠. 그래서 게으르다(lazy)고 표현하는겁니다! 만약 게으르지 않았다면, A를 가져올 때 B 까지 한 번에 가져올 수 있었을 테니까요!


반면, fetch join은 FetchType.LAZY 와 반대입니다. fetch join은 join을 통해 AB 를 가져올 때 한 번에 가져오는 기능입니다.

 

  • fetch join은 함께 가져오다

  • FetchType.LAZY 는 가져올 때 게으르게 가져오다

이렇게 기억하시면 이해에 조금 더 도움 되실 것 같아요!

또 궁금하신 점 있으시면 편하게 질문 남겨주세요. 감사합니다~!! 🙏 🙏

별볼일있는 개발자님의 프로필 이미지
별볼일있는 개발자

작성한 질문수

질문하기