paulwong

          數據庫的鎖機制

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

          HIBERNATE中的實現:

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

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

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

          主站蜘蛛池模板: 睢宁县| 龙门县| 宝应县| 新竹市| 马公市| 财经| 千阳县| 随州市| 长兴县| 肥乡县| 十堰市| 聊城市| 南华县| 拉孜县| 兴安盟| 南京市| 望江县| 安阳市| 绩溪县| 营山县| 东明县| 海门市| 巴林右旗| 克拉玛依市| 阳高县| 兴仁县| 潍坊市| 新乐市| 乡城县| 奈曼旗| 桐梓县| 高碑店市| 蒙自县| 桐庐县| 杭锦旗| 保康县| 毕节市| 大兴区| 林西县| 淳安县| 南京市|