2012-08-27 45 views
0

據我所知,Hibernate默認使用透明寫入來提交事務。JPA persistence.xml使用Hibernate 3.0 flushmode

但是,我希望我的實體管理器在事務提交後立即在數據庫上提交我的事務。無論如何,我可以在JPA的persistence.xml中配置它嗎?

+0

我不認爲你是U瞭解什麼是「事務性寫入」意味着什麼。這並不意味着Hibernate會延遲提交事務。這意味着Hibernate會延遲執行INSERTS,UPDATES和DELETES,直到以後的時間點(通常是事務提交)。執行INSERTS,UPDATES和DELETES的過程稱爲刷新。那麼你是否真的想迫使Hibernate不延遲刷新呢? –

回答

0

Hibernate將不得不在提交數據庫時提交事務。您還可以找到有幫助的兩個附加選項:

  • 定義會話和自動提交(進入連接的屬性屬性「hibernate.connection.autocommit」)強制Hibernate事務

  • 與數據庫事務中的事務處理過程中同步(通過調用Session.flush())

問候,

+0

感謝您的回覆。我想這樣做沒有session.flush(),因爲它需要在所有地方完成。我嘗試了第一種方法,它似乎並不工作 – Chris

+0

正如我所提到的,奇怪的是,默認不起作用,您也可以按如下方式強制FlushMode會話「session.setFlushMode(FlushMode.ALWAYS)」if if works I建議你考慮是否要「FlushMode.COMMIT」就夠了 –