2013-02-12 116 views
5

我是JPA的新手。然後我回到這個註釋@Version。 在此註釋,它說的文檔:JPA中的樂觀鎖定是什麼?

「這批註指定版本用於執行 時確保完整性版本字段或 用作其樂觀鎖定值的實體類 屬性。合併操作和樂觀併發控制「。

樂觀鎖定以及它如何與此註釋實際相關是什麼意思? 感謝

+2

查找信息[在此鏈接下](http://bit.ly/Y9IIO1)。 – 2013-02-12 14:41:29

+1

讓每個人一次編輯同一件事。當有人提交他們的變更時,檢查自他們開始變更以來是否已經有其他**變更。如果是這樣,哭泣。 (即回滾他們的變化並迫使他們獲得新的副本)。通常使用版本號作爲跟蹤變更集的一種方式。 – 2013-02-12 14:52:56

回答

5

長話短說...

與標註爲@Version現場實體的每一條記錄被加上像SVN版本。每當實體通過提交(和刷新!)進行更新時,檢查就會確保當前實體的版本和數據庫中的條目匹配。檢查失敗導致OptimisticLockException,因爲有人在當前操作完成之前對該註冊表進行了更改。

樂觀是基於在

「的概念我並不需要鎖定該條目,沒有人會去碰它」

而悲觀鎖實際上鎖定某些操作(如READ或WRITE)在給定的條目假設

「有人會嘗試,而我的工作來更新這個實體」