12.4. 지속성 문맥

Jakarta Persistence 지속성 컨텍스트에는 지속성 프로바이더가 관리하는 엔터티가 포함됩니다. 지속성 컨텍스트는 데이터 소스와 상호 작용하기 위한 첫 번째 수준의 트랜잭션 캐시 역할을 합니다. 엔터티 인스턴스 및 해당 라이프사이클을 관리합니다. 로드된 엔터티는 애플리케이션에 반환되기 전에 지속성 컨텍스트에 배치됩니다. 또한 엔터티 변경은 트랜잭션이 커밋될 때 데이터베이스에 저장되도록 지속성 컨텍스트에 배치됩니다.

컨테이너 관리 지속성 컨텍스트의 수명은 트랜잭션 범위 지속성 컨텍스트라고 하는 트랜잭션으로 범위가 지정되거나 확장 지속성 컨텍스트라고 하는 단일 트랜잭션 이상으로 확장된 라이프사이클 범위가 있을 수 있습니다. enum 데이터 유형이 있는 PersistenceContextType 속성은 컨테이너 관리 엔터티 관리자의 지속성 컨텍스트 수명 범위를 정의하는 데 사용됩니다. 지속성 컨텍스트 수명 범위는 EntityManager 인스턴스가 생성될 때 정의됩니다.

12.4.1. 트랜잭션에 저장된 지속성 컨텍스트

트랜잭션 범위 지속성 컨텍스트는 활성 자카르타 트랜잭션과 함께 작동합니다. 트랜잭션 커밋 시 지속성 컨텍스트가 데이터 소스에 플러시됩니다. 엔터티 오브젝트는 분리되지만 애플리케이션 코드에서 참조할 수 있습니다. 데이터 소스에 저장해야 하는 모든 엔터티 변경은 트랜잭션 중에 수행해야 합니다. EntityManager 호출이 완료되면 트랜잭션 외부에서 읽기인 엔터티가 분리됩니다.