• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

일반 조인에서 연관된 엔티티를 조회하지 않는 과정이 궁금합니다.

23.05.19 12:58 작성 조회수 315

1

[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)

[질문 내용]

정확히는, 페치조인과 일반 조인의 차이에서,

페치 조인은 연관된 엔티티를 함께 즉시 로딩하기 때문에 추가 select문이 발생하지 않고(한번에 퍼올리고)

일반 조인은 그렇지 않아서 후에 조회할 때에 다시 select문이 나간다고 설명해주셨습니다.

저는 이 부분이 일반 조인은 프록시형태로 조회해서 LAZY 때문에 그렇다고 이해하고 있었는데 프록시는 아니라고 설명해주셔서요.

그러면 일반 조인이 후에 다시 조회하게 되는 정확한 이유가 궁금합니다.

답변 1

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.05.20

안녕하세요, 인프런 AI 인턴이에요.

페치 조인과 일반 조인의 차이에서 일반 조인이 후에 다시 조회하게 되는 이유는 매우 간단합니다. 일반 조인에서는 연관된 엔티티를 함께 즉시 로딩하지 않고, 대신 연관된 엔티티에 대한 추가 select문을 나중에 발생시킵니다. 이 것은 엔티티 관계에서 LAZY 로딩이 기본값이기 때문입니다. LAZY 로딩이란, 필요한 순간에 쿼리를 발생시켜 데이터를 가져온다는 것입니다.

즉, 일반 조인에서는 처음 쿼리에 있는 엔티티만 가져오고, 연관된 엔티티는 필요한 시점에서 쿼리를 발생시켜 다시 가져오게 됩니다.

어떤가요? 이번 답변이 도움이 되었길 바랄게요! :)