2013-01-18 61 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的直接