【问题标题】:What is JPA's EntityManager?JPA 的 EntityManager 是什么?
【发布时间】:2020-11-26 19:34:24
【问题描述】:

Oracle 的documentation 正在通过“持久化上下文”的概念来解释javax.persistence.EntityManager

用于与持久化上下文交互的接口。

EntityManager 实例与持久性上下文相关联。持久性上下文是一组实体实例,其中对于任何持久性实体身份,都有一个唯一的实体实例。在持久性上下文中,管理实体实例及其生命周期。 EntityManager API 用于创建和删除持久实体实例,通过主键查找实体,以及查询实体。

虽然此处解释了“持久性上下文”,但 EntityManager 解决了什么问题以及我作为开发人员如何从使用它中受益仍然没有多大意义。

对于刚接触 JPA 世界的人,有没有更简单的介绍性解释?

更新:我收到的答案非常有帮助,但我遇到的重复问题(以及其他一些问题也可能)是 JPA 概念是通过与其他 JPA 概念的关系来解释的。以与 JPA 生态系统无关的方式介绍 EntityManager 将是非常有启发性的,就像一个人具有其他 ORM(例如实体框架或 SQL Alchemy)的背景一样。

【问题讨论】:

  • 您需要考虑的更重要的问题是:“JPA 会帮助我(如果可以,如何帮助)?”。如果您认为 JPA 值得追求,EntityManager 将是您进入那个世界的门户。

标签: java hibernate jpa spring-data-jpa entitymanager


【解决方案1】:

您可以将其解释为:

同一实体管理器中的托管实体实例集在任何给定时间称为其持久性上下文。

并且在任何给定时间,同一 Persistence Identity 中的 Java 实例只能存在于 Persistence Context 中。

如果你把它放在关系图上,它看起来像:

Persistence
     | 1 
     | creates
     | *
EntityManagerFactory
     | 1
     | creates
     | *
EntityManager
     | * 
     | manages
     | 1
PersistenceContext

还有EntityManager及其相关的PersistenceContext就是所谓的一级缓存。二级缓存将由EntityManagerFactory 管理。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 1970-01-01
    • 2012-05-25
    相关资源
    最近更新 更多