12.4. 지속성 문맥
Jakarta Persistence 지속성 컨텍스트에는 지속성 프로바이더가 관리하는 엔터티가 포함됩니다. 지속성 컨텍스트는 데이터 소스와 상호 작용하기 위한 첫 번째 수준의 트랜잭션 캐시 역할을 합니다. 엔터티 인스턴스 및 해당 라이프사이클을 관리합니다. 로드된 엔터티는 애플리케이션에 반환되기 전에 지속성 컨텍스트에 배치됩니다. 또한 엔터티 변경은 트랜잭션이 커밋될 때 데이터베이스에 저장되도록 지속성 컨텍스트에 배치됩니다.
컨테이너 관리 지속성 컨텍스트의 수명은 트랜잭션 범위 지속성 컨텍스트라고 하는 트랜잭션으로 범위가 지정되거나 확장 지속성 컨텍스트라고 하는 단일 트랜잭션 이상으로 확장된 라이프사이클 범위가 있을 수 있습니다. enum 데이터 유형이 있는 PersistenceContextType 속성은 컨테이너 관리 엔터티 관리자의 지속성 컨텍스트 수명 범위를 정의하는 데 사용됩니다. 지속성 컨텍스트 수명 범위는 EntityManager 인스턴스가 생성될 때 정의됩니다.
12.4.1. 트랜잭션에 저장된 지속성 컨텍스트 링크 복사링크가 클립보드에 복사되었습니다!
트랜잭션 범위 지속성 컨텍스트는 활성 자카르타 트랜잭션과 함께 작동합니다. 트랜잭션 커밋 시 지속성 컨텍스트가 데이터 소스에 플러시됩니다. 엔터티 오브젝트는 분리되지만 애플리케이션 코드에서 참조할 수 있습니다. 데이터 소스에 저장해야 하는 모든 엔터티 변경은 트랜잭션 중에 수행해야 합니다. EntityManager 호출이 완료되면 트랜잭션 외부에서 읽기인 엔터티가 분리됩니다.
12.4.2. 연장 지속성 컨텍스트 링크 복사링크가 클립보드에 복사되었습니다!
확장된 지속성 컨텍스트는 여러 트랜잭션에 걸쳐 있으며, 활성 자카르타 트랜잭션 없이 데이터 수정을 대기열에 추가할 수 있습니다. 컨테이너 관리 지속성 컨텍스트는 상태 저장 세션 빈에만 삽입할 수 있습니다.