[英]locking a object using hiberante session.load
Hibernate具有PESSIMISTIC鎖定機制,可用於鎖定數據庫行。
session.lock(Object object,LockMode lockMode)。
可以說我鎖定了一個對象:
1)session.lock(myObject.LockMODE.READ)
2)session.lock(myObject,LockMODE.UPGRADE)
3)session.lock(myObject.LockMODE.UPGRADE_NOWAIT)
如果線程獲取了一個鎖然后死了,那會發生什么?該鎖是自動釋放的嗎?還是該記錄被永遠鎖定了?
session.lock(myObject,LOCKMODE.SOME_LOCK_MODE) //thread dies . (lets say JVM is killed)
鎖綁定到事務。 提交或回滾事務后,將釋放它。 如果您的線程死亡並保持事務懸空,則該鎖仍然有效。
試圖獲取鎖的其他線程將僅等待。
如果我沒記錯的話,對lock()的調用會導致select ... for update
SQL語句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.