paulwong

          數(shù)據(jù)庫的鎖機制

          在進行SELECT操作時,通常接下來會進行UPADTE的操作,如果希望COMMIT前,所SELECT的數(shù)據(jù)不會被其他線程SELECT出來,則兩個線程都加FOR UPDATE/FOR UPDATE NOWAIT關鍵字,這樣數(shù)據(jù)庫就會鎖定這些記錄,加了FOR UPDATE的會進行等待,直到上一線程結(jié)束,加了FOR UPDATE NOWAIT的線程則直接拋出異常,這種機制稱為數(shù)據(jù)庫的鎖機制。

          HIBERNATE中的實現(xiàn):

          LockMode.NONE :有緩存用緩存,沒緩存則從數(shù)據(jù)庫讀 
          LockMode.READ :直接從數(shù)據(jù)庫讀,不使用緩存數(shù)據(jù) 
          LockMode.WRITE :在insert update數(shù)據(jù)的時候,HIBERNATE內(nèi)部使用的。 
          以上3種均為HIBERNATE級別的鎖,也就是緩存級別的鎖。 

          下面2種為數(shù)據(jù)庫級別的鎖: 
          LockMode.UPGRADE:相當于SQL語句select for update,被select的數(shù)據(jù)都被數(shù)據(jù)庫鎖住了,不能被其他事務修改。 
          LockMode. UPGRADE_NOWAIT :是ORACLE數(shù)據(jù)庫特有的select for update nowait

          posted on 2012-04-19 17:56 paulwong 閱讀(356) 評論(0)  編輯  收藏 所屬分類: HIBERNATE

          主站蜘蛛池模板: 称多县| 青岛市| 莱芜市| 大邑县| 柘城县| 汽车| 六盘水市| 土默特右旗| 台南县| 鹿邑县| 左贡县| 临泽县| 顺义区| 灵石县| 商城县| 保康县| 靖边县| 合川市| 措美县| 潮州市| 嘉鱼县| 祁东县| 呼和浩特市| 开远市| 伊通| 凤翔县| 于都县| 龙井市| 财经| 韶关市| 栾城县| 白朗县| 兰溪市| 皋兰县| 敦化市| 乐安县| 若尔盖县| 盐山县| 盱眙县| 福鼎市| 冕宁县|