• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

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

21.05.12 14:54 작성 조회수 92

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를 가져올수는 없는 건가요?

답변 1

답변을 작성해보세요.

1

안녕하세요. abc9023님

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

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

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

감사합니다.

abc9023님의 프로필

abc9023

질문자

2021.05.13

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