영속성 컨텍스트는 애플리케이션과 데이터베이스 사이에 객체를 보관하는 가상의 DB와 같은 역할을 한다.
이러한 영속성 컨텍스트는 엔티티 매니저를 통해 접근이 가능하며 아래와 같은 장점이 있다.
1차 캐시 지원
맵과 같은 형식의 공간이 있는데 엔티티를 등록 조회하면 해당 맵의 등록하고 반복해서 조회시 DB에서 조회하는게 아닌 맵에서 해당 엔티티를 조회가능하게 한다.
동일성 보장
1차 캐시를 지원함으로써 반복해서 조회되는 객체는 동등성(값의 동일)은 물론 동일성(객체의 완전 일치)을 보장
트랜잭션을 지원하는 쓰기 지연
영속성 컨텍스트는 쓰기지연SQL 저장소라는 곳이 존재한다. 해당 저장소는 영속성 컨텍스트에 엔티티의 저장, 수정, 삭제등이 이루어 질 때 생성된 SQL을 DB에 바로 전달하지 않고 저장하였다가 트랜잭션 범위가 종료되면 한번에 SQL을 전달하여 커넥션 사용 비용을 감소하여 성능향상의 효과가 있다.
변경 감지
영속성 컨텍스트에 영속상태로 등록된 엔티티는 스냅샷이라고하는 초기의 객체 값을 저장하게 되는데 영속성 컨텍스트의 플러시가 일어나는 순간 관리되는 엔티티들의 현재 값과 초기 값을 비교하여 SQL저장소의 추가로 저장하여 반영된다.
지연 로딩 기능