12.5. Jakarta Persistence EntityManager
Jakarta Persistence 엔터티 관리자는 지속성 컨텍스트에 대한 연결을 나타냅니다. 엔터티 관리자를 사용하여 지속성 컨텍스트에서 정의한 데이터베이스에 대해 읽고 쓸 수 있습니다.
지속성 컨텍스트는 javax.persistence 패키지의 Java 주석 @PersistenceContext 를 통해 제공됩니다. 엔터티 관리자는 Java 클래스 javax.persistence.EntityManager 를 통해 제공됩니다. 관리 빈에서 EntityManager 인스턴스는 다음과 같이 삽입할 수 있습니다.
예제: 엔터티 관리자 주입
12.5.1. Application-Managed EntityManager 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션 관리 엔터티 관리자는 기본 지속성 프로바이더인 org.hibernate.jpa.HibernatePersistenceProvider 에 직접 액세스할 수 있습니다. 애플리케이션 관리 엔터티 관리자의 범위는 애플리케이션이 생성되고 애플리케이션에서 종료될 때까지 지속될 때의 범위입니다. @PersistenceUnit 주석을 사용하여 애플리케이션 관리 엔터티 관리자를 반환하는 javax.persistence.EntityManagerFactory 인터페이스에 지속성 유닛을 삽입할 수 있습니다.
애플리케이션이 특정 지속성 유닛의 EntityManager 인스턴스 전체에 분산되지 않은 지속성 컨텍스트에 액세스해야 하는 경우 애플리케이션 관리 엔터티 관리자를 사용할 수 있습니다. 이 경우 각 EntityManager 인스턴스는 격리된 새 지속성 컨텍스트를 생성합니다. EntityManager 인스턴스 및 관련 PersistenceContext 는 애플리케이션에서 명시적으로 생성 및 제거됩니다. EntityManager 인스턴스가 스레드 보안이 아니므로 EntityManager 인스턴스를 직접 주입할 수 없는 경우에도 애플리케이션 관리 엔터티 관리자를 사용할 수 있습니다. EntityManagerFactory 인스턴스는 스레드 보안입니다.
예제: 애플리케이션 관리 엔터티 관리자
12.5.2. Container-Managed EntityManager 링크 복사링크가 클립보드에 복사되었습니다!
컨테이너 관리 엔터티 관리자는 애플리케이션의 기본 지속성 프로바이더를 관리합니다. 트랜잭션 범위 지속성 컨텍스트 또는 확장 지속성 컨텍스트를 사용할 수 있습니다. 컨테이너 관리 엔터티 관리자는 필요에 따라 기본 지속성 프로바이더의 인스턴스를 생성합니다. 새로운 기본 지속성 프로바이더인 org.hibernate.jpa.HibernatePersistenceProvider 인스턴스가 생성될 때마다 새로운 지속성 컨텍스트도 생성됩니다.