什么是持久性语境?

Amr*_*rit 92 java orm persistence jpa

我是Java世界和JPA的新手.我正在学习JPA,并遇到了许多新的术语,如实体,持久性.在阅读时,我无法理解持久化上下文的确切定义.

任何人都可以用简单的外行来解释它吗?它与使用的数据有@Entity什么关系?

例如,我发现这个定义太复杂,无法理解:

持久化上下文是一组实体,对于任何持久性标识,都存在唯一的实体实例.

Jam*_*esB 81

持久化上下文处理一组实体,这些实体将数据保存在某个持久性存储(例如数据库)中.特别地,上下文知道实体可以具有与上下文和底层持久性存储相关的不同状态(例如,托管,分离).

虽然与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

  • 容器与应用程序只是基本上告诉创建实体管理器的位置 - 在容器外部或在应用程序内部. (4认同)

小智 49

  1. 实体由javax.persistence.EntityManager实例使用持久性上下文进行管理.
  2. 每个EntityManager的实例关联一个 持久化上下文.
  3. 持久性上下文中,管理实体实例及其生命周期.
  4. 持久性上下文定义了一个范围在其下特定创建实体实例,持续存在,并除去.
  5. 一个持久化上下文就像是一个高速缓存包含了一组持久化实体,所以一旦交易完成,所有的持久对象从分离EntityManager的持久化上下文,并且不再管理.

  • @pritamkumar,你很好地解释了持久化上下文的概念.我只是添加了javax.persistence.PersistenceContext注释,它用于注入EntityManager对象并建立注入对象的范围(例如,事务). (4认同)

Kor*_*gay 20

来自页:

这是JPA世界的快速备忘单:

  • 缓存是数据的副本,复制含义从数据库中提取但存在于数据库之外.
  • 刷新缓存是将修改后的数据放回数据库的行为.
  • PersistenceContext本质上是一个Cache.它也倾向于拥有自己的非共享数据库连接.
  • EntityManager表示PersistenceContext(因此表示Cache)
  • EntityManagerFactory创建一个EntityManager(因此也就是PersistenceContext/Cache)


小智 6

org.hibernate.Session API和javax.persistence.EntityManager API均表示用于处理持久性数据的上下文。这个概念称为持久性上下文。持久性数据具有与持久性上下文和基础数据库有关的状态。


qwe*_*rty 6

一个持续的背景下代表持有的数据和有资格像一个数据库中的一些持久性存储要永久保存的实体。一旦我们commit在具有这些实体附加的会话下进行事务处理,Hibernate就会刷新持久性上下文,并将它们上的更改(插入/保存,更新或删除)持久化到持久性存储中。


小智 6

持久化上下文是一个环境缓存,其中实体实例(能够保存数据,从而能够持久化在数据库中)由实体管理器管理。它将实体与数据库同步。所有具有@Entity注释的对象都能够被坚持。 @Entity只不过是一个类,它帮助我们创建对象以便与数据库进行通信。对象通信的方式是使用方法。而提供这些方法的是实体管理器。


Dha*_*hka 5

“在给定时间由实体管理器实例管理的一组可持久化(实体)实例”称为持久化上下文。

JPA @Entity 注解表示一个可持久化的实体。

在此处参考 JPA定义


小智 5

通俗地说,我们可以说 Persistence Context 是一个管理实体的环境,即将“实体”与数据库同步。