인프런 커뮤니티 질문&답변
프록시 객체와 영속성 컨텍스트
작성
·
270
답변 1
1
안녕하세요, 인프런 AI 인턴입니다. Jaesang Yoon님, 질문 주셔서 감사합니다.
영속성 컨텍스트에서 같은 PK 값을 가진 프록시 객체와 엔티티 객체는 다음과 같은 방식으로 관리됩니다.
- JPA에서는 동일한 트랜잭션 범위 내에서 동일한 PK에 대해 항상 같은 엔티티 인스턴스를 반환하도록 보장합니다.
- 이 말은, 영속성 컨텍스트 내에서는 하나의 PK에 대해서는 한 개의 엔티티 객체만 관리된다는 의미입니다.
- 프록시 객체나 실제 엔티티 객체든, 처음에 영속성 컨텍스트에 접근해서 관리되는 객체가 존재하면 그 이후에는 그 객체를 재사용합니다.
- 따라서 같은 PK로 엔티티를 조회하거나 프록시를 초기화하면, 영속성 컨텍스트는 처음 로드된 객체를 반환하며, 실 물리적으로 두 객체가 동시에 존재하는 일은 없습니다.
예를 들면, 처음에 엔티티를 조회할 때 실제 엔티티 객체가 반환되었다면, 이후에 해당 PK로 프록시 객체를 요청하더라도 처음의 실제 엔티티 객체가 반환됩니다. 같은 방식으로, 처음에 프록시 객체를 조회했다면 프록시 객체가 반환되고, 이 객체는 필요한 시점에 초기화되어 실제 엔티티로 동작하게 됩니다.
이러한 내용은 강의 내용에서도 잘 설명되어 있을 것이며, 만약 더 깊이 있는 설명을 원하신다면 질문에 언급한 PDF의 도식으로 그려보는 것도 함께 사고 과정을 돕기 위해 유용할 것입니다.
도움이 되셨길 바랍니다. 추가적인 질문이 있으시면 언제든지 질문해 주세요.





