2013-01-18 29 views
2

我们知道有处于休眠 两个持久化上下文即的org.hibernate.Sessionjavax.persistent.EntityManager 但有些哪些,还有在会话不存在在EntityManager的
例如
方法session.delete(entity);是否在会话
但EntityManager中没有删除 因为我们必须使用
entityManager.remove(entity);这样哪个上下文用于持久化数据库中的实体,哪个更快。哪种持久性上下文在休眠方面的性能更好?

正如我会心分延是传递给构造org.hibernate.Session
实体实例删除方法可以是在管理或脱管状态,而实体实例传递给上javax.persistence.EntityManager除去必须在管理州。

+1

好问题。我不知道性能,但我只能说如果你想在JPA标准中达到100%,那么你必须使用EntityManager。 –

回答

1

没有性能差异;除了原生Session之外,Hibernate还通过JPA的EntityManager公开其服务。如果你不关心JPA兼容性(我没有看到你应该这么做的充分理由),可以使用本地Session来充分利用Hibernate的全部功能。

+0

- >你是赖特,我经历了文档,发现JPA API已经授权到Hibernate API的 ,例如 entityManager.remove(entity);有一个委托调用删除会话的方法 – MyStack

0

非常好的问题
很多持久性API的有代表团org.hibernate作为API的
所以,我认为更好的方法是使用org.hibernate作为API的直接