[java] 지속성 컨텍스트 란 무엇입니까?

저는 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


답변

  1. 엔티티는 지속성 컨텍스트사용하여 javax.persistence.EntityManager 인스턴스에 의해 관리됩니다 .
  2. 각각 의 EntityManager의 인스턴스와 연관된 영속 컨텍스트 .
  3. 지속성 컨텍스트 내에서 엔티티 인스턴스와 해당 라이프 사이클이 관리됩니다.
  4. 컨텍스트 지속성 정의 범위에 있는 아래 특정 엔티티 인스턴스가 생성을 유지하고, 제거 하였다.
  5. 영속 컨텍스트는 유사한입니다 캐시 의 집합이 포함되어 영구적 인 엔티티를 한 번 따라서, 트랜잭션이 완료되면 , 모든 영구 객체가 분리 될 때 의 EntityManager의 영속 컨텍스트 와 더 이상 관리되지 않습니다.

답변

페이지 에서 가져온 :

다음은 JPA 세계에 대한 간단한 치트 시트입니다.

  • 캐시는 데이터의 복사본으로, 복사본은 데이터베이스에서 가져 왔지만 데이터베이스 외부에있는 것을 의미합니다.
  • 캐시 비우기는 수정 된 데이터를 데이터베이스에 다시 넣는 작업입니다.
  • PersistenceContext는 본질적으로 캐시입니다. 또한 자체 비공유 데이터베이스 연결을 갖는 경향이 있습니다.
  • EntityManager는 PersistenceContext (따라서 캐시)를 나타냅니다.
  • EntityManagerFactory는 EntityManager (따라서 PersistenceContext / Cache)를 생성합니다.

답변

지속적인 컨텍스트 데이터를 저장하고 데이터베이스 같은 일부 영구 저장소에 유지 될 자격이있는 개체를 나타냅니다. commit이러한 엔티티가 첨부 된 세션에서 트랜잭션이 되면 Hibernate는 영구 컨텍스트를 플러시하고 이들에 대한 변경 ( 삽입 / 저장, 업데이트 또는 삭제 )은 영구 저장소에 유지됩니다.


답변

org.hibernate.SessionAPI와 javax.persistence.EntityManagerAPI는 모두 영구 데이터를 처리하기위한 컨텍스트를 나타냅니다.

이 개념을 지속성 컨텍스트 라고합니다 . 영구 데이터에는 지속성 컨텍스트 및 기본 데이터베이스와 관련된 상태가 있습니다.


답변

“주어진 시간에 엔티티 관리자 인스턴스가 관리하는 지속 가능한 (엔티티) 인스턴스 세트”를 지속성 컨텍스트라고합니다.

JPA @Entity 주석은 지속 가능한 엔티티를 나타냅니다.

여기에서 JPA 정의 참조


답변

평범한 용어로 Persistence Context는 엔티티가 관리되는 환경이라고 말할 수 있습니다. 즉, “Entity”를 데이터베이스와 동기화합니다.