2017-01-06 70 views

回答

0

好問題。在本地Hibernate中,會話與JPA中的EntityManager具有相同的功能,那麼爲什麼大多數hibernate示例在讀取數據時都有事務。

如果你只是打開一個會話,只做一個讀取查詢,你應該沒問題。但是,這不是recommended。問題是,如果您正在使用現有的會話,您的選擇查詢可能會導致預查詢刷新,最終可能會導致插入。 您可能還想看看這個post

就我個人而言,我幾乎從不在顯式的EntityManager或Session上調用getTransaction()。使用容器管理器EntityManager/Session和聲明式事務(比如Spring @Transactional或J2EEs @TransactionAttribute)要好得多。您可以通過查看這個tutorial來了解它是如何工作的。這個例子有點過時了,因爲您會使用彈簧數據JPARectory而不是編寫自己的DAO。

相關問題