我想了解什麼是調用EntityManager.lock(實體,LockModeType.READ)的效果。 API文檔聽起來讓我感到非常困惑。JPA:Read Lock如何工作?
如果我必須併發線程和線程1調用鎖(實體,LockModeType.READ),線程2仍然可以讀寫實體嗎?
我已經學會爲止:
在JPA1讀鎖定類型是相同JPA2樂觀。如果設置了這樣的鎖,則EntityManager在提交事務之前檢查版本屬性,但不更新它。我找到了OPTIMISTIC鎖定模式的解釋:Link。搜索OPTIMISTIC(READ)LockMode示例。 就像我理解的那樣,在線程1中設置讀取鎖定對線程2 ... n沒有影響。所有其他線程仍然可以讀取和寫入實體。但是,當線程1中的事務提交併且另一個線程更新了該實體時,線程1中的事務將回滾。
我的理解是正確的嗎?
我還是不明白。有人可以重組句子或增加一個例子嗎? – stoefln 2014-04-09 18:22:00
我更新了我的答案,請檢查我提供的鏈接 – engma 2014-04-10 11:31:21