inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

Lazy로딩과 Fetch 조인 관련해서 질문드립니다

176

abc9023

작성한 질문수 8

0

안녕하세요 영한님 강의 열심히 듣고 있습니다.

Lazy로딩과 Fetch 조인 관련해서 한가지 궁금한 부분이 생겨서 질문 드립니다

OneToMany 의 관계에서 Fetch 조인은 하나의 클래스에 대해서만 가능하고 두개이상에서는 bags Exception 발생하더라구요

그래서 여러개의 OneToMany 관계가 있을때는 가장 많은 데이터가 있는 부분을 Fetch 조인으로 가져오고

나머지는 Lazy 로딩으로 가져온다가 보통 쓰는 방식이더라구요 여기서 궁금한 부분이


모두 OneToMany 관계일때

A에서 B를 EAGERFetch Join 으로 한번에 가져오고 (C, D를 Lazy 로딩)
C를 가져올때는 C를 가져오는 쿼리가 나가고 이후에 F를 가져오는 쿼리가 하나 더 (batch size 설정) 나가던데
(EAGER로 설정한 경우) PS. 강의보면서 EAGER를 비추천하셨는데 아예사용하지 않는게 좋을까요? )

이부분을 한번에 가져오고 싶은데 C를 가져올때 Fetch Join으로 F를 가져올수는 없는 건가요?

spring spring-boot java JPA

답변 1

1

김영한

안녕하세요. abc9023님

강의에서 설명드렸듯이 EAGER는 사용하지 않는 것이 좋습니다. 운영상 복잡한 경우 예측이 어려운 쿼리가 발생하고, 또 원하지 않는 경우에도 함께 조회됩니다.

A를 조회하는 경우 F까지 fetch join으로 조회할 수는 없습니다. SQL에서 1:N은 1개만 fetch join이 가능합니다.

여기서 대안은 C부터 쿼리를 시작하는 것입니다. 그러면 F도 A도 모두 fetch join 할 수 있습니다.

감사합니다.

0

abc9023

이해했습니다 감사합니다~~!!!

changeTeam 메서드 질문

0

34

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

87

1

existsByUserIdAndProjectId vs existsByUserAndProject 중 어떤 방식이 적절할까요?

0

128

3

MemberRepository 구현체

0

71

1

pdf 표현 질문드립니다.

0

77

1

로그가 남지 않는 문제.

0

98

1

테스트 라이브러리가 강의는 junit4가 맞나요??

0

78

2

pdf 파일과 차이점이 있는 것같은데 문제 없나요?

0

75

2

@PrePersist, @PreUpdate 호출 시점 질문드립니다.

0

102

2

Sort 인터페이스는 잘 사용 안하나요?

0

59

1

스캔대상 질문드립니다.

0

48

1

하이버네이트6에서의 최적화에 이은 질문

0

92

1

save() vs saveAndFlush DB 통신 횟수

0

58

1

순수 JPA 리포지토리 코드 수정부분

0

92

2

bulk연산 후 flush하는 이유를 모르겠어요

0

163

3

bulk insert 질문입니다.

0

191

2

교만했던 것 같아요.

0

152

1

RESTful 강의는 안하시는 건지 궁금합니다.

0

154

2

동적 테이블에 대한 질문

0

89

1

영속성 전이와 연관관계

0

141

2

강의 10:25 질문

0

78

1

단건 update 질문

0

104

2

엔티티 와 도메인의 경계

0

129

1

UsernameOnlyDto 타입 type mismatch 오류

0

123

1