인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

sgr4244님의 프로필 이미지
sgr4244

작성한 질문수

스프링 데이터 JPA

JPA 프로그래밍 6. Fetch

지금(Eager), 나중에(Lazy)의 의미를 모르겠습니다

작성

·

259

0

지금이냐 나중이냐 라는 말의 의미를 모르겠습니다

Fetch 를 Eager로 설정하면 연관관계에 있는 엔티티를 조회하고 Lazy로 설정하면 연관관계에 있는 엔티티까지는 조회하지 않는다는 것이 엔티티를 지금 가져오느냐 나중에 가져오느냐와 무슨 상관이 있는건가요?

 

 

 

답변 1

0

백기선님의 프로필 이미지
백기선
지식공유자

안녕하세요. Fetch 모드는 JPA가 관리하는 객체의 상태와 관련이 있는데요. Persistent 상태의 객체는 객체의 연관 관계를 따라 조회할 때 추가적인 쿼리가 발생할 수 있습니다. 가령, student.getClassroom() 이라는 메서드를 호출할 때 Student와 연결되어 있는 Classroom 데이터를 조회하는 쿼리가 발생할 수 있는 거죠. 이런식으로 추후에 연관 관계를 조회할 때 쿼리가 발생하는 것을 Lazy fettch 라고 표현해요. 그게 아니라 student를 조회할 때 미리 해당 학생의 classroom 정보까지 이미 쿼리를 해온다면 Eager fetch라고 하구요.

sgr4244님의 프로필 이미지
sgr4244

작성한 질문수

질문하기