프록시공부방/JPA2023. 3. 10. 22:30
Table of Contents
- 프록시 객체는 처음 사용할 때 한 번만 초기화
- 프록시 객체를 초기화 할 때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아님,
초기화 되면 프록시 객체를 통해서 실제 엔티티에 접근 가능 - 프록시 객체는 원본 엔티티를 상속 받음, 따라서 타입 체크시 주의 해야함 (== 비교 실패, 대신 instance of 사용)
- 영속성 컨텍스트에 찾는 엔티티가 이미 있으면, em.getReference()를 호출해도 실제 엔티티 반환
- 영속성 컨텍스트의 도움을 받을 수 없는 준영속 상태일 때, 프록시를 초기화 하면 문제 발생
프록시와 즉시로딩 주의
- 가급적 지연 로딩만 사용(특히 실무)
- 즉시 로딩을 적용하면 예상하지 못한 SQL이 발생
- 즉시 로딩은 JPQL에서 N+1 문제를 일으킨다.
- @ManyToOne, @OneToOne은 기본이 즉시 로딩 -> LAZY로 설정
- @OneToMany, @ManyToMany는 기본이 지연 로딩
반응형
'공부방 > JPA' 카테고리의 다른 글
값 타입과 불변 객체 (1) | 2023.03.21 |
---|---|
임베디드 타입 (0) | 2023.03.21 |
MappedSuperclass (0) | 2023.03.05 |
고급 매핑 (0) | 2023.03.04 |
다양한 연관관계 매핑 (0) | 2023.02.22 |
@soycrab :: 꿀맛코딩
행복한 코딩을 위하여!
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!