什么是持久性上下文?

2022-08-31 08:08:25

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

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

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

持久性上下文是一组实体,对于任何持久性标识,都有一个唯一的实体实例。


答案 1

持久性上下文处理一组实体,这些实体保存要在某个持久性存储(例如数据库)中持久化的数据。特别是,上下文知道实体相对于上下文和基础持久性存储可以具有的不同状态(例如,托管,分离)。

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

https://vladmihalcea.com/wp-content/uploads/2014/07/jpaentitystates.png


答案 2
  1. 实体由 javax.persistence.EntityManager 实例使用持久性上下文进行管理。
  2. 每个 EntityManager 实例都与一个持久性上下文相关联。
  3. 持久性上下文中,将管理实体实例及其生命周期。
  4. 持久性上下文定义一个作用域,在该作用域下创建、持久化和删除特定的实体实例。
  5. 持久性上下文就像包含一组持久性实体缓存,因此一旦事务完成,所有持久性对象都将从EntityManager的持久性上下文中分离出来,不再被管理。

推荐