考慮一個場景 - 2個應用程序訪問/更新單個數據庫。其中一個應用程序正在使用休眠&已經從db獲得了一些記錄,現在將處理它們&保存回來。但在保存之前,其他應用程序會更新同一組記錄。在這種情況下會發生什麼? 休眠會在保存時拋出一個錯誤嗎?或休眠將有智能同步更新的記錄?休眠同時更新
休眠同時更新
回答
冬眠將拋出StaleObjectException
。這裏是why。
Hibernate使用optimistic locking來處理數據庫併發性。如果在當前事務提交更改之前要更新的數據被另一個事務修改,則會引發StaleObjectException
。
編輯:
以及如何冬眠確定對象在內存中的狀態是陳舊的?
Hibernate使用版本字段來跟蹤對實體的更改。此版本字段在每次提交時都會更新。現在,如果在提交之前版本號與在事務開始時讀取實體時的版本號不匹配,則引發StaleObjectException
。
以及我們如何從這個異常中恢復? bcoz如果這種情況發生在生產中,那麼出路是什麼? –
以及hibernate如何識別內存中對象的狀態是陳舊的? –
從異常中恢復是主觀的,沒有最佳實踐。請檢查[this discussion thread。](https://forum.hibernate.org/viewtopic.php?t=942461&highlight=retry)Hibernate3似乎有一些解決方案。 – Santosh
- 1. 休眠更新同一列
- 2. 從休眠3.6更新到休眠4.0
- 3. 休眠更新OneToMany
- 4. 更新在休眠
- 5. 更新在休眠
- 6. 休眠更新表
- 7. 休眠:如何更新不同的ID
- 8. 自動時間戳更新休眠
- 9. 休眠更新有時不起作用
- 10. 休眠和批量更新
- 11. 休眠刪除並更新
- 12. 休眠JDBCConnectionException:無法更新
- 13. 如何更新休眠
- 14. 多重更新休眠
- 15. 更新休眠手動版
- 16. 休眠事務和'更新'
- 17. 休眠更新問題
- 18. 休眠更新查詢
- 19. 休眠更新的EntityManager
- 20. 休眠動態更新
- 21. 休眠更新查詢
- 22. 使用休眠更新列
- 23. 休眠親子更新
- 24. 休眠:更新子對象
- 25. 休眠屬性更新
- 26. 更新前休眠選擇
- 27. 休眠@OneToMany更新父
- 28. 休眠批量更新
- 29. 休眠saveOrUpdate不更新
- 30. 休眠 - 更新操作:
我認爲這是一個普遍的情況,它應該可以正常工作。我認爲它正在管理這個不休眠的數據庫。 –