inflearn logo
강의

Course

Instructor

Real-world! Spring Boot and JPA Utilization 2 - API Development and Performance Optimization

1:N 계층구조 테이블들 간에 Fetch 조인 사용 질문 드립니다.

314

kjh38zzang1938

4 asked

0

안녕하세요. 열심히 강의를 듣고 있는 수강생입니다!

궁금한게 있습니다.

현재 실무에서 사용하고 있는 구조를 좀더 개선시키고 싶어서 열심히 노력중인데요.

현재 상황을 말씀 드리겠습니다.

A, B, C, D 테이블이 있습니다.

각 entitiy 클래스 별로 OneToMany로 A-B, B-C, C-D 이런식으로 Relation이 걸려 있습니다.

현재 기준으로는 각 OneToMany 별로 BatchSize=1000 & FetchType=Eager로 적용이 되어있는데요.

이렇다 보니, A 테이블 조회시 조회된 ID 기준으로 하위 테이블들에 대해서 IN쿼리가 몇개씩 불려지게 됩니다.

 

그래서 Fetch 조인을 통해서 한번에 가져오는 방식으로 바꿔보려고 개선을 하려고 했는데요.

예를 들면

select a.* from A a

left fetch join a.B b

left fetch join b.C c

left fecth join c.D d

이런식으로 하려고했더니 컴파일 단계에서 MultipleBagFetchException이 발생 하였습니다.

그래서 찾아보니 fecth 조인 사용할 경우에는 oneToMany로 걸리는 대상이 2개 이상이면

위와같은 Exception을 떨군다고 하더라구요..(카티션 곱 이슈로 인한 하이버네이트에서 사전에 미리 막는..)

 

그래서 결국에는 A-B까지만 Fetch로 빼고 나머지 B-C, C-D는 기존 그대로 Eager 전략으로

기존과 동일하게 조회되도록 조금이나마 개선은 했는데요..

B-C, C-D를 lazy로 바꾸니 N+1이 발생했구요.. N+1해소 하는 방법으로 Fecth조인을 쓰자니

위와같은 Exception이 발생을 하구요..

어떻게 하면 좋을까요.. 도와주세요!

 

java spring spring-boot jpa 김영한 fetchjoin

Answer 1

0

yh

안녕하세요. 김정훈님

궁금해하시는 내용이 이번 강의에서 다루는 내용들입니다 🙂

이번 강의를 끝까지 들어보시면 궁금한 내용이 자연스럽게 해결되실거에요.

감사합니다.

2

kjh38zzang1938

그렇군요, 현재 절반정도 수강했는데

완강하고 다시 고민 해보겠습니다. 감사합니다.

강의 관련 외 질문입니다.

0

65

2

SpringBoot4 + Hibernate7 모듈 등록 방법 공유

0

86

1

BeanCreationException

0

86

3

Update 후 UpdateMemberResponse 매핑할 때

0

46

1

트랜잭션을 사용 안 할 때 커넥션은 언제 가져오나요?

0

98

2

페이징 + 검색조건 관련해서 질문드립니다.

0

70

1

Query Dsl Q파일 질문입니다.

0

81

1

루트 쿼리라는것은

0

58

1

메서드를 분리하는 기준

0

62

1

findAllWithMemberDelivery 메서드 질문드립니다.

0

108

3

연관관계 매핑을 안 쓸 경우, 사용해야 하는 전략

0

83

2

fetch join과 영속화와 OSIV의 관계

0

84

2

Distinct 사용 전 결과에 대한 의문

0

113

2

레포지토리 계층에서의 트랜잭션에 대한 의문

0

56

1

영속성 컨텍스트 생명주기의 신기한 부분이 있습니다.

0

78

2

dto 필드 속 엔티티 여부

0

58

1

뷰템플릿 사용 시

0

76

2

Result 클래스 관련 질문

0

56

1

@PostConstruct 프록시 관련 질문드립니다

0

85

1

DTO 대신 Form 사용은 안되나요?

0

133

1

OSIV ON 상태일 때

0

95

1

fetch join VS fetch join 페이징 궁금증

0

179

2

양방향 연관관계 알아보는 법?

0

104

1

16강 17강 간단 정리 이게 맞을까요 ?

0

165

2