inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

실전! 스프링 데이터 JPA

LazyLoading 시 가져오는 객체에 대해 질문이있습니다!

427

suseok

작성한 질문수 2

0

[질문 내용]
안녕하세요 영한님 JPA 를 공부하다가 LazyLoading 관련해서 의문점이 생겨 질문남깁니다.
연관관계에서의 LazyLoading 은 실제 entity를 가져오는것이 아닌 프록시객체의 target이 entity와 연결되어있는것으로 알고있습니다.
그래서 Team(1) <-> Member(n) 의 관계라고 가정했을때 Member 에서의
@ManyToOne 관계에서의 LazyLoading 으로 객체를 가져오게 되면 Team은 `Team$HibernateProxy$95RMKfgq@13875` 이런 형식으로 프록시 객체를 갖고있는것을 확인했습니다.
다만 Team에서 @OneToMany 관계의 Member를 LazyLoading 호출하게되면
List<Member> 의 형식이 PersistentBag 의 객체형식을 가지고있는것까지는 이해했는데 컬렉션 내의 객체는 제가 생각했던
`Member$HibernateProxy$95RMKfgq@13875` 와 같은 프록시 객체의 형태가 아닌
`Member@13867` 과 같은 실제 객체를 가지고 있는것으로 확인했습니다.
이와 관련해서 PersistenceCollection 이나 StatefulPersistenceContext 클래스의 관련된 문서를 찾아봤지만
답을 찾지못해 여쭤봅니다ㅠㅜ
 
추가로 entityManagerFactory getPersistenceUnitUtil().isLoaded 메소드를 이용해서 List 객체를 조회했을땐
false 로 확인했습니다. 다만 디버그모드로 봤을때는 ManyToOne 과 다르게 실제객체형태로 보이네요ㅠㅜ
디버그모드로 확인시 값을조회해야해서 의도치않게 추가쿼리가 발생되는것은 인지하고있지만 이 케이스는 이해가 되질 않네요 ㅎㅎ
 

jpa java lazy spring-boot JPA spring

답변 2

7

김영한

안녕하세요. LPD Code님

일대다 관계의 경우 PersistentBag이 지연로딩을 내부에서 처리해줍니다. 그리고 해당 컬렉션의 데이터를 조회하면 컬렉션 안의 데이터를 한번에 조회하는 것이지요. 그리고 컬렉션 안의 데이터는 지연로딩할 필요가 없기 때문에 실제 엔티티가 조회됩니다. (컬렉션 자체가 지연로딩의 기능을 대신해줍니다)

감사합니다.

0

나르비

삭제된 글입니다

0

나르비

혹시라도 제가 잘못된 정보를 작성하였다면 영한님이나 서포터분들께서 정정해주세요! 

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

0

69

1

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

0

107

3

MemberRepository 구현체

0

58

1

pdf 표현 질문드립니다.

0

62

1

로그가 남지 않는 문제.

0

81

1

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

0

70

2

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

0

72

2

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

0

91

2

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

0

52

1

스캔대상 질문드립니다.

0

46

1

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

0

85

1

save() vs saveAndFlush DB 통신 횟수

0

53

1

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

0

86

2

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

0

152

3

bulk insert 질문입니다.

0

178

2

교만했던 것 같아요.

0

147

1

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

0

147

2

동적 테이블에 대한 질문

0

86

1

영속성 전이와 연관관계

0

130

2

강의 10:25 질문

0

74

1

단건 update 질문

0

95

2

엔티티 와 도메인의 경계

0

127

1

UsernameOnlyDto 타입 type mismatch 오류

0

119

1

Projection 개념과 데이터 전달과정에 대해 질문 있습니다.

0

136

1