2011-09-27 52 views

回答

13

當你想實施Optimistic concurrency control時,使用NHibernate Version。如果不啓用樂觀併發控制並鎖定您的應用程序將使用「上次提交贏」策略。如果兩個事務大致同時修改同一個對象,則用戶可能會遇到丟失的更新。更合適的策略被稱爲「第一次承諾獲勝」。在這種情況下,第二筆交易將失敗,並顯示如下所示的錯誤:有人已經對您要提交的數據進行了 修改。您一直在使用陳舊的 數據。請用新數據重新開始對話。

Java Persistence with Hibernate

Hibernate提供自動版本。每個實體實例都有一個 版本,可以是數字或時間戳。 Hibernate在修改對象的版本時增加 ,自動比較版本 ,並在檢測到衝突時引發異常。因此,您將 將此版本屬性添加到您的所有持久實體類中,以啓用樂觀鎖定爲 。 ...版本號只是一個計數器值 - 它沒有任何有用的語義 值。 Hibernate應用程序使用實體表上的附加列。 請記住,訪問相同數據庫的所有其他應用程序可能會(也可能應該)執行樂觀版本控制,並使用同一版本的 版本列。

+0

感謝您的解釋。 –