Spring, java/Spring_JPA

[Spring JPA] 프록시

재코딩 2022. 9. 15. 17:34
반응형

사전적 의미

 

프록시 기초

em.find vs em.getReference

1) em.find(): DB를 통해서 실제 엔티티 객체 조회

2) em.getReference(): DB 조회를 미루는 가짜(프록시) 엔티티 객체 조회

 

프록시 특징

1) 실제 클래스를 상속 받아서 만들어진다.

 

2) 실제 클레스와 겉 모양이 동일하다.

3) 사용하는 입장에서 실제 객체인지 프록시 객체인지 구분하지 않고 사용한다. (이론상으로)

4) 프록시 객체는 실제 객체의 참조를 보관한다.

5) 프록시 객체를 호출하면 프록시 객체는 실제 객체의 메소드를 호출한다.

6) 프록시 객체는 처음 사용할 때 한 번만 초기화한다. 이때, 프록시 객체가 실제 엔티티로 바뀌는 것이 아닌 프록시 객체를 통해서 실제 엔티티에 접근이 가능하다.

 

7) 프록시 객체는 실제 엔티티를 상속받기에 타입 체크시 주의 해야한다. (비교 x, instance of 사용)

8) 영속성 컨텍스트에 찾는 엔티티가 이미 존재하면 em.getReference()를 호출해도 실제 엔티티를 반환한다.

9) 영속성 컨텍스트의 도움을 받을 수 없는 준영속 상태일 때, 프록시를 초기화하면 문제가 발생한다.

 

 

 

 

반응형