LockMode

//just reassociate
session.lock(obj, LockMode.NONE);
//do a version check, then reassociate
session.lock(obj, LockMode.READ);
//do a version check, using SELECT ... FOR UPDATE, then reassociate
session.lock(obj, LockMode.UPGRADE);

理解如下:
對於LockMode.NONE,只進行綁定,如果obj對象庫中無對應數據,也不報異常
對於LockMode.READ,先檢查版本,用於用version實現樂觀鎖的情況,如果加鎖時version舊了,則拋出異常,這種加鎖的目的除了綁定,還有判斷cache中數據是最新的數據,如果obj對象庫中無對應數據,也報異常
對於LockMode.UPGRADE,也做版本檢查,同時用for update對錶中記錄加鎖,也就是說加鎖的目的是爲了獨佔式修改,如果obj對象庫中無對應數據,也報異常

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章