ssonzm.log
로그인
ssonzm.log
로그인
[JPA]프록시
Jimin
·
2023년 1월 5일
팔로우
0
JPA
0
JPA
목록 보기
5/6
프록시
em.find() .vs. em.getReference()
find(): 데이터베이스를 통해 실제 엔티티 객체 조회
getReference(): 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회
실제 클래스를 상속 받아서 만들어짐
실제 클래스와 겉모양 똑같음
사용하는 입장에서는 진짜 객체인지 프록시 객체인지 구분하지 않고 사용하면 됨(이론상)
프록시 객체는 실제 객체의 참조(target)을 보관
프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드 호출
프록시의 특징
처음 사용할 때 한 번만 초기화
초기화 시 프록시 객체가 실제 엔티티로 바뀌는 것은 아님. 초기화되면 프록시 객체를 통해서 실제 엔티티에 접근 가능
프록시 객체는 원본 엔티티를 상속받음. 따라서 타입 체크시 주의해야 함(== 비교 실패, 대신 instance of 사용)
영속성 컨텍스트에 찾는 엔티티가 이미 있으면 em.getReference()를 호출해도 실제 엔티티 반환
영속성 컨텍스트의 도움을 받을 수 없는 준영속 상태일 때, 프록시를 초기화하면 문제 발생
프록시 확인
Jimin
팔로우
이전 포스트
[JPA]고급 매핑
다음 포스트
[JPA]값 타입
0개의 댓글
댓글 작성