저는 Java 세계와 JPA에 익숙하지 않습니다. 나는 JPA를 공부하고 있었고 엔티티, 지속성과 같은 많은 새로운 용어를 발견했습니다. 읽는 동안 Persistence Context 의 정확한 정의를 이해할 수 없었습니다 .
누구나 간단한 평신도 용어로 설명 할 수 있습니까? 에 사용 된 데이터로 @Entity
무엇을합니까?
예를 들어,이 정의는 이해하기 너무 복잡합니다.
지속성 컨텍스트는 모든 지속성 ID에 대해 고유 한 엔티티 인스턴스가 있도록하는 엔티티 세트입니다.
답변
지속성 컨텍스트는 일부 지속성 저장소 (예 : 데이터베이스)에서 지속될 데이터를 보유하는 엔티티 집합을 처리합니다. 특히, 컨텍스트는 컨텍스트 및 기본 지속성 저장소와 관련하여 엔티티가 가질 수있는 여러 상태 (예 : 관리 됨, 분리됨)를 알고 있습니다.
Hibernate와 관련이 있지만 (JPA 공급자) 다음 링크가 유용하다고 생각합니다.
http://docs.jboss.org/hibernate/core/4.0/devguide/en-US/html/ch03.html
http://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/architecture.html
Java EE에서 지속성 컨텍스트는 일반적으로 EntityManager를 통해 액세스됩니다.
http://docs.oracle.com/javaee/6/api/javax/persistence/EntityManager.html
엔티티가 가질 수있는 다양한 상태와 이들 사이의 전환은 아래에 설명되어 있습니다.
http://docs.jboss.org/hibernate/entitymanager/3.6/reference/en/html/objectstate.html
http://gerrydevstory.com/wp-content/uploads/2012/05/jpa-state-transtition.png
답변
- 엔티티는 지속성 컨텍스트 를 사용하여 javax.persistence.EntityManager 인스턴스에 의해 관리됩니다 .
- 각각 의 EntityManager의 인스턴스와 연관된 영속 컨텍스트 .
- 지속성 컨텍스트 내에서 엔티티 인스턴스와 해당 라이프 사이클이 관리됩니다.
- 컨텍스트 지속성 정의 범위에 있는 아래 특정 엔티티 인스턴스가 생성을 유지하고, 제거 하였다.
- 영속 컨텍스트는 유사한입니다 캐시 의 집합이 포함되어 영구적 인 엔티티를 한 번 따라서, 트랜잭션이 완료되면 , 모든 영구 객체가 분리 될 때 의 EntityManager의 영속 컨텍스트 와 더 이상 관리되지 않습니다.
답변
다음은 JPA 세계에 대한 간단한 치트 시트입니다.
- 캐시는 데이터의 복사본으로, 복사본은 데이터베이스에서 가져 왔지만 데이터베이스 외부에있는 것을 의미합니다.
- 캐시 비우기는 수정 된 데이터를 데이터베이스에 다시 넣는 작업입니다.
- PersistenceContext는 본질적으로 캐시입니다. 또한 자체 비공유 데이터베이스 연결을 갖는 경향이 있습니다.
- EntityManager는 PersistenceContext (따라서 캐시)를 나타냅니다.
- EntityManagerFactory는 EntityManager (따라서 PersistenceContext / Cache)를 생성합니다.
답변
지속적인 컨텍스트 데이터를 저장하고 데이터베이스 같은 일부 영구 저장소에 유지 될 자격이있는 개체를 나타냅니다. commit
이러한 엔티티가 첨부 된 세션에서 트랜잭션이 되면 Hibernate는 영구 컨텍스트를 플러시하고 이들에 대한 변경 ( 삽입 / 저장, 업데이트 또는 삭제 )은 영구 저장소에 유지됩니다.
답변
org.hibernate.Session
API와 javax.persistence.EntityManager
API는 모두 영구 데이터를 처리하기위한 컨텍스트를 나타냅니다.
이 개념을 지속성 컨텍스트 라고합니다 . 영구 데이터에는 지속성 컨텍스트 및 기본 데이터베이스와 관련된 상태가 있습니다.