- JPA를 이해하는 데 가장 중요한 용어
- "엔티티를 영구히 저장하는 환경" 이라는 뜻
- EntityManager.persist(entity);
DB에 저장하는 게 아니라 Entity를 영속성 컨텍스트에 저장하는 개념이다
ENTITY Manager? 영속성 컨텍스트
- 영속성 컨텍스트는 논리적인 개념 (눈에 보이지 않는다)
- 엔티티매니저를 통해서 영속성 컨텍스트에 접근
엔티티 매니저 -> 1:1 -> PersistenceContext
엔티티의 생명주기
- 비영속(new/transient)
영속성 컨텍스트와 전혀 관계가 없는 새로운 상태- 영속(managed)
영속성 컨텍스트에 관리되는 상태- 준영속(detached)
영속성 컨텍스트에 저장되었다가 분리된 상태- 삭제(removed)
삭제된 상태
PersistenceContext의 장점
- 1차 캐시
key가 pk, value가 객체 자체가 된다.
1차 캐시에서의 조회 가능
1차 캐시에 없으면 DB조회값을 1차캐시에 넣고 반환- 동일성(identity) 보장
- 트랜잭션을 지원하는 쓰기 지연(transactional write-
- 변경 감지
- 지연 로딩