Jpa 프록시와 지연로딩

Published: by Creative Commons Licence

JPA 프록시와 지연로딩

0. 지연 로딩이란

지연 로딩이란 어떤 엔티티에 연관 관계를 맺고 있는 다른 엔티티를 실제로 사용할 때 연관된 엔티티를 조회 하는 것을 말한다. 반대로 즉시 로딩이란 엔티티를 DB에서 조회할 때 자신과 연관되는 엔티티를 조인을 통해 함께 조회하는 방식을 말한다.

즉시로딩과 같이, 어떤 엔티티를 조회하는데 그 엔티티와 관련된 모든 엔티티들이 함께 조회된다면 성능상의 문제가 발생할 수 있다. 따라서 연관 관계를 맺고 있는 엔티티를 자주 사용한다면 즉시 로딩을, 자주 사용하지 않는다면 지연 로딩을 하는것이 좋다.

1. 프록시란?

지연로딩을 하기 위해서 프록시가 필요하다. 프록시란 실제 엔티티 객체 대신 사용되는 객체로서 실제 엔티티 클래스와 상속 관계 및 위임 관계에 있다. 프록시 객체는 실제 엔티티 클래스를 상속 받아 만들어 지므로 실제 엔티티와 겉모습이 같다.

2. 프록시 초기화

프록시 초기화란 프록시 객체가 참조하는 실제 엔티티가 Persistence Context에 생성되어 있지 않을 때, persistence context에 실제 엔티티 생성을 요청하고 생성된 실제 엔티티를 프록시 객체의 참조 변수에 할당하는 과정을 말한다.


참고

https://victorydntmd.tistory.com/210 : 전체 글 참고

https://www.slideshare.net/zipkyh/ksug2015-jpa3-jpa