2

正如我们所知,hibernate 中有两个 Persistent 上下文,即org.hibernate.Sessionjavax.persistent.EntityManager 但 Session 中的一些方法在 EntityManager 中不存在,
例如
session.delete(entity); 是否在 Session 中
,但在 EntityManager 中没有删除,因为我们必须使用
entityManager.remove(entity); 所以哪个上下文用于在数据库中持久化实体,哪个在两者之间更快。

据我所知,不同之处在于
传递给 org.hibernate.Session 删除方法的实体实例可以处于托管状态或分离状态,而传递给 javax.persistence.EntityManager 上的删除方法的实体实例必须处于托管状态。

4

2 回答 2

2

没有性能差异;Hibernate 只是通过 JPA 公开它的服务EntityManager,除了原生的Session. 如果您不关心 JPA 兼容性(我看不出有什么好的理由),请使用本机Session来利用 Hibernate 的完整功能集。

于 2013-01-18T14:45:29.623 回答
0

非常好的问题
许多 Persistent API 都委托给 org.hibernate API
,所以我认为直接使用 org.hibernate API 更好

于 2013-01-22T11:59:48.667 回答