首页 > 解决方案 > EntityManager 何时获得新会话?

问题描述

通常很明显 EntityManager 正在持有当前会话,我们可以使用它来获取它:

Session session = entityManager.unwrap(Session.class);

但我很好奇 EntityManager 何时获得新的。

@编辑

@PersistenceContext(type = PersistenceContextType.TRANSACTION, unitName = "context")
private EntityManager              em;

标签: jpa

解决方案


根据您的代码,我假设您使用的是 Java EE 或 Spring。

@PersistenceContext(type = PersistenceContextType.TRANSACTION, unitName = "context")
private EntityManager em;

在这种情况下,EntityManager 绑定到事务。这意味着您在每笔新交易中都会获得一个新的 EntityManager。

Session 和 EntityManager 是相同的,并且具有相同的生命周期。这只是相同的另一个名称。Session 是 Hibernate 俚语和 EntityManager JPA。


推荐阅读