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 閱讀(357) 評論(0)  編輯  收藏 所屬分類: HIBERNATE

          主站蜘蛛池模板: 萨嘎县| 商都县| 内江市| 塔城市| 定结县| 鄄城县| 岢岚县| 衡东县| 雅江县| 孙吴县| 苍梧县| 昭苏县| 霸州市| 行唐县| 和顺县| 孙吴县| 二连浩特市| 科技| 东辽县| 沽源县| 大关县| 田东县| 鸡东县| 金昌市| 瓮安县| 图们市| 前郭尔| 邹平县| 二手房| 兰溪市| 乐业县| 河北省| 丰都县| 屏东市| 东宁县| 开封市| 治县。| 松潘县| 盐源县| 保靖县| 防城港市|