2010-03-08 54 views
0

我有從數據庫中讀取記錄的情況。如果一切正常,我會修改一些屬性並提交事務。hibernate的事務讀取和後續更新

但是在兩個線程完成相同的情況下,它們會更新相同的記錄。

如何使它在休眠?

回答

3

您可以使用樂觀鎖定:給實體一個版本,並讓它拋出一個異常,並在以後再試一次,如果版本與其他線程不一樣(其他線程,集羣中的其他節點或甚至一些獨立的sql腳本麻煩更新版本)改變了同一個實體。 或者你可以使用悲觀鎖定:真正鎖定數據庫中的實體。

有關更多詳細信息,請參閱hibernate文檔中的Transactions and Concurrency一章。