樂觀鎖相關(guān):
update語句一旦執(zhí)行,在事務(wù)還沒提交前,是會自動把更新的數(shù)據(jù)行鎖定,其他需要鎖定數(shù)據(jù)行的dml操作(例如:select * for update、update、delete)會被掛起等待,等到該數(shù)據(jù)行的鎖被釋放(例如:事務(wù)commit、rollback),才能繼續(xù)執(zhí)行。
hibernate的樂觀鎖實現(xiàn):
實現(xiàn)之一:是通過version字段實現(xiàn),查詢select時候會把version的值取出,然后在update或delete時,會在where條件上加上version = ?(查詢時候的值)。
所以hibernate在更新時語句為:
update tbl_name set column = value , ... where id = ? and version = ?