프록시란?
JPA 구현체들은 객체들 처음부터 데이터베이스에서 꺼내서 조회하는 것이 아니다. 이렇게 하면 실제 사용 할때 너무 많은 쓸모 없는 접근이 발생 할 수 있다.
따라서, 실제 사용하는 시점에 데이터베이스에서 조회할 수 있다. 이와 관련 된 기술이 프록시 인데, 이 프록시를 통해서 즉시로딩 ( EAGER ) 과 지연로딩 ( LAZY ) 을 할 수 있다.
"JPA 표준 명세는 지연 로딩 구현방법을 JPA 구현체에 위임했다. 하이버네이트는 지연 로딩을 지원하기 위해 프록시를 사용하는 방법과 바이트코드를 수정하는 두 가지 방법을 제공하는데 바이트코드를 수정하는 방법은 복잡하다."
프록시 객체는
entity를 참조하며,repository.findById(id)를 불렀을때 혹은EntityManager.find()을 불렀을 때 해당Entity를 기반으로 확장되어 만들어 진다. 실제로Entity를 만드는 타이밍은XXX.getName()과 같은 호출로 실제 데이터가 필요해 질때Entity가 생성된다.
tip: 엔티티를 프록시로 조회할 때 식별자 ( PK ) 값을 파라미터로 전달하는데 프록시 객체는 이 식별자 값을 보관한다. 프록시 객체는 식별자 값을 가지고 있으므로 만약 식별자 값을 조회하는 getId() 를 호출해도 프록시를 초기화 하지 않는다.
'웹개발 > 웹서버' 카테고리의 다른 글
| HTTP 메소드 활용 (0) | 2023.12.14 |
|---|---|
| HTTP API에서의 URI와 HTTP Method란? (0) | 2023.12.13 |
| HTTP란? 빠르게 핵심 알아보기 (0) | 2023.12.10 |
| URI와 웹브라우저 요청 흐름 (0) | 2023.12.08 |
| TCP,UDP 특징, port와 dns 간략 설명 (1) | 2023.12.06 |