我知道什麼是樂觀鎖定和悲觀鎖定,但是當您編寫java代碼時,您是如何做到的?假設我在Java中使用Oracle,我有JDBC中的任何方法可以幫助我做到這一點嗎?我將如何配置這件事?任何指針將不勝感激。如何從java代碼編寫樂觀和悲觀鎖定
6
A
回答
3
假設我在Java中使用Oracle,在JDBC中是否有任何方法可以幫助我做到這一點?
This Oracle paper應爲您提供關於如何做到這一點的一些技巧。
沒有具體的JDBC方法。相反,您通過設計SQL查詢/更新以及放置事務邊界的方式實現樂觀鎖定。
11
您可以在這樣的數據庫表實現樂觀鎖(這是鎖定多麼樂觀在Hibernate中完成):
- 添加整數「版本」列到你的餐桌。
- 每次更新相應行時增加此列的值。
- 要獲得鎖定,只需讀取該行的「版本」值即可。
- 將「version = obtain_version」條件添加到更新語句的 的where子句中。驗證更新後受影響的行數。 如果沒有行受到影響 - 某人已經修改了您的條目。
你的更新應該像
UPDATE mytable SET name = 'Andy', version = 3 WHERE id = 1 and version = 2
當然,如果各方遵循它,相反,需要特殊的處理DBMS提供的鎖這個機制只。
希望這會有所幫助。
相關問題
- 1. 樂觀和悲觀的鎖
- 2. 樂觀鎖或悲觀鎖?
- 3. 鎖定在爪哇 - 樂觀VS悲觀
- 4. 悲觀離線鎖(Java,Spring)
- 5. 樂觀鎖定
- 6. 樂觀鎖定
- 7. 悲觀鎖定記錄?
- 8. 執行悲觀鎖定
- 9. 悲觀鎖定失敗ObjectOptimisticLockingFailureException
- 10. 悲觀鎖失敗
- 11. jdbctemplate和樂觀鎖定
- 12. 樂觀鎖定和org.hibernate.StaleObjectStateException:
- 13. 樂觀鎖定和覆蓋
- 14. JPA悲觀鎖定和Spring中的JpaTemplate
- 15. HSQLDB和樂觀鎖
- 16. 樂觀鎖定和全表鎖
- 17. 用hibernate的樂觀/悲觀鎖定併發的好策略/解決方案
- 18. NEventStore樂觀鎖
- 19. 樂觀鎖樂觀併發控制
- 20. 樂觀版本鎖定
- 21. 樂觀鎖定隊列
- 22. 樂觀鎖定的原子
- 23. Yii:禁用樂觀鎖定
- 24. 樂觀鎖定Laravel 4
- 25. JPA @Version樂觀鎖定
- 26. 忽略樂觀鎖定
- 27. 休眠悲觀鎖定模式
- 28. 實體框架 - 悲觀鎖定
- 29. 悲觀鎖定在GORM哪裏查詢
- 30. 對CloudSQL的GAE悲觀鎖定
Java鎖定和JDBC在您所查找的方式中無關。你試圖解決什麼問題? Java鎖是可以通過使用「同步」關鍵字獲得的重入鎖。 那麼,你到底在找什麼? – Pavan 2012-01-01 06:47:45
我正在尋找數據庫鎖定 – user2434 2012-01-01 07:42:58