Proxy-And-Relationship-Management
1 프록시
- 객체는 객체 그래프로 연관된 객체들을 탐색한다.
- 그런데 객체가 데이터베이스에 저장되어 있으므로 연관된 객체를 자유롭게 탐색하기는 어렵다.
- JPA 구현체는 이를 해결하고자
프록시
라는 기술을 사용한다. 프록시
를 사용하면 연관된 객체를 처음부터 데이터베이스에서 조회하는 것이 아니라, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다.- 이를
지연 로딩
이라 한다. 지연 로딩
기능을 사용하려면 실제 엔티티 객체 대신에 데이터베이스 조회를 지연할 수 있는 가짜 객체를 필요로 하는데 이를프록시 객체
라고 한다.
1.1 프록시 기초
- 엔티티를 실제 사용하는 시점까지 데이터베이스 조회를 미루고 싶다면
em.find()
대신em.getReference()
을 사용하라 - 이 메서드는 데이터베이스를 조회하지 않고 대신에 데이터베이스 접근을 위임한 프록시 객체를 반환한다.