inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

fetch join 질문

해결된 질문

188

Hyeon_053

작성한 질문수 1

0

Fetch join에 있어 궁금한 점이 있어서 남깁니다.

Fetch join을 사용할 때 서로 떨어진 테이블끼리도 fetch join을 사용할 수 있는지 궁금합니다.

일단 페이징 같은 기능이 없다는 가정하에,

예를 들어 Entity 1 - Entity 2가 다대일의 관계이고, Entity 2 - Entity 3이 다대일의 관계로 묶여있다면,

select * from Entity1 e1 join fetch e.Entity2 join fetch e.Entity2.Entity3;

위와 같이 join fetch e.Entity2.Entity3; 이러한 fetch join 문이 가능한가에 대해서 궁금합니다.

만약 이것이 불가능하다면 저러한 상황에서 Entity2를 기준으로 쿼리를 하는 것 말고 다른 방법으로 최적화 할 수 있는 방법이 있는지 궁금합니다.

jpa fetchjoin

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요.
Fetch join에 대해 궁금하신 점에 대해 답변해드리겠습니다.

Fetch join은 JPA에서 엔티티 그래프를 사용하여 한 번의 쿼리로 연관된 엔티티들을 함께 로딩하는 기능입니다.
Fetch join을 사용할 때, 서로 떨어진 테이블 간에도 사용할 수 있습니다.
즉, 여러 개의 연관 관계를 Join fetch로 함께 로딩할 수 있습니다.

보시고 계신 쿼리는 다수의 연관 관계를 함께 로딩하는 쿼리로 정상적으로 작동합니다.
select * from Entity1 e1 join fetch e1.Entity2 join fetch e1.Entity2.Entity3;

이렇게 작성된 fetch join 쿼리를 실행하면 Entity1, Entity2, Entity3에 대한 모든 데이터가 한 번의 쿼리로 로딩됩니다.

만일 위의 쿼리가 원하는 결과를 제대로 리턴하지 않는다면, 엔티티의 매핑 설정이나 데이터 상태 등을 확인해보시는 것이 좋습니다.

참고로, Fetch join을 사용할 때에는 Lazy 로딩이 아닌 Eager 로딩으로 인해 데이터베이스 레코드 뻥튀기 현상을 유발할 수 있으므로 주의해야 합니다.
이러한 이유로 일부 경우에는 Fetch join을 대체할 다른 방법을 사용하기도 합니다.
하지만 이에 대해서는 상황과 요구사항에 따라 적절한 최적화 방법을 선택하셔야 합니다.

더 궁금한 사항이 있으시다면 언제든지 물어보세요! 즐거운 프로그래밍 공부되세요.

리뉴얼 시기

0

4

0

JPA 엔티티로 만들었다고 기술종속이 아닌지에 대한 질문

0

18

2

설계 트레이드 오프 링크 접속 안됨

0

71

2

테스트 질문, 어떤것을 사용할것인것에 대해서

0

38

1

service-discovery 프로세스 가동 이유

0

40

1

트래잭션 전파 기본- 에 대한 개념 질문? 이렇게 생각해도 맞나요?

0

42

1

헥사고날 아키텍처와 DDD를 적용할 때, 화면에 강하게 연관된 조회 데이터를 어떻게 다루는 게 좋은지 궁금합니다.

0

117

2

h2 database

2

51

2

Request DTO에서 Entity를 생성할 때 의존성 방향을 반대로 하면 어떨까요?

0

104

2

Querydsl 설정 할때 - run and test 다르게 설정 할때? 질문

0

54

1

new 패키지명.Dto명 생략가능

0

67

2

변경감지(더티체킹) 이후 플러시할 경우의 쿼리

0

60

1

단일 테이블 시 null 값과 연관관계 필요성 질문

0

57

1

SpringBoot4 버전 Hibernate5JakartaModule 라이브러리 오류

0

60

1

aws 관련 질문드립니다.

1

61

3

setter 사용하지 않기

0

53

1

안녕하세요 토비님 혹시 완성된 코드의 repository 주소는 없을까요?

0

112

2

자막 오타 제보

0

47

1

rabbitmq에 configservice 연결에 대해 질문있습니다.

0

57

1

안녕하세요 치킨 디도스 이벤트 보고 흉내내보려 들어왔습니다..

0

67

2

join에대해 질문드립니다.

0

46

1

코드 질문

0

51

2

To-Do App

0

44

1

twitterdb 연결이 안돼요

1

51

2