프록시 객체란
데이터베이스를 조회하지 않고 가짜 객체를 생성하여 조회하는 객체를 반환하는 것을 말한다.
ex) 유저 테이블에는 많은 정보들이 들어가 있을 것이다. 유저 객체가 필요할 때 주소, 작성 글등을 전부 불러온다면 데이터베이스에 많은 쿼리문을 날리게 될 것이다. 이것을 최소화 하기위해 사용한다.

프록시 특징
- 프록시 클래스는 실제 클래스를 상속 받아서 만들어지므로 실제 클래스와 겉 모양이 같다.
- 프록시 객체는 실제 객체에 대한 참조를 보관한다.
- 프록시 객체는 처음 사용할 때 한 번만 초기화 한다.
- 프록시 객체를 초기화한다고 프록시 객체가 실제 엔티티로 바뀌는 것은 아니다. 프록시 객체가 초기화 되면 프록시 객체를 통해서 실제 엔티티에 접근할 수 있다.
- 영속성 컨텍스트에 찾는 엔티티가 이미 있으면 데이터베이스를 조회할 필요가 없으므로, entityManager()를 호출해도 프록시가 아닌 실제 엔티티를 반환한다.
- 초기화는 영속성 컨텍스트의 도움을 받아야 가능하다. 따라서 영속성 컨텍스트의 도움을 받을 수 없는 준영속 상태의 프록시를 최기화하면 문제가 발생한다.
프록시 객체 초기화
user.getName() 처럼 실제 사용될 때 데이터 베이스를 조회해서 실제 엔티티 객체를 생성하는데 이것을 프록시 객체의 초기화라 한다.
여기서 지연로딩과 즉시로딩이란 중요한 개념이 있었는데 다음 포스트에 정리하자!
'Spring > 스프링 부트' 카테고리의 다른 글
| 2021-11-16 (스프링) @RestController 와 @Controller (0) | 2021.11.16 |
|---|---|
| 2021-11-11 (회고록) 11일 공부정리 (0) | 2021.11.11 |
| 2021-10-22(스프링) 22일 공부 정리 (0) | 2021.10.22 |
| 2021-10-17(회고록) 일기 (0) | 2021.10.17 |
| 2021-10-17(JPA 공부) 연관관계의 주인 (0) | 2021.10.17 |