posts - 431,  comments - 344,  trackbacks - 0
          1.傳播行為
          定義了關(guān)于客戶端和被調(diào)用方法的事務(wù)邊界。傳播規(guī)則就是在說(shuō)明新的事務(wù)是否要被啟動(dòng)或是掛起,或者方法是否要在事務(wù)環(huán)境中運(yùn)行。
          spring定義了7種不同的傳播行為。
          1)PROPAGATION_MANDATORY
             表明方法必須要在事務(wù)中運(yùn)行。如果事務(wù)不存在,拋出異常
          2)PROPAGATION_NESTED
             表示如果當(dāng)前已經(jīng)存在一個(gè)事務(wù),則該方法應(yīng)當(dāng)運(yùn)行在一個(gè)嵌套的事務(wù)中。被嵌套的事務(wù)可以從當(dāng)前事務(wù)中單獨(dú)地提交或回滾。如果當(dāng)前事務(wù)不存在,就相當(dāng)于PROPAGATION_REQUIRED
          3)PROPAGATION_NEVER
            表示當(dāng)前的方法不應(yīng)該運(yùn)行在一個(gè)事務(wù)上下文中。如果當(dāng)前存在一個(gè)事務(wù),則會(huì)拋出一個(gè)異常。
          4)PROPAGATION_NOT_SUPPORTED
          表示該方法不應(yīng)該在事務(wù)中運(yùn)行。如果一個(gè)現(xiàn)有的事務(wù)正在運(yùn)行中。它將在該方法的運(yùn)行期間被掛起
          5)PROPAGATION_REQUIRED
          表示當(dāng)前方法必須運(yùn)行在一個(gè)事務(wù)中。如果一個(gè)現(xiàn)有的事務(wù)正在運(yùn)行中,該方法將運(yùn)行在這個(gè)事務(wù)中。否則的話,就要開(kāi)始一個(gè)新的事務(wù)。
          6)PROPAGATION_REQUIRES_NEW
          表示當(dāng)前方法必須運(yùn)行在它自己的事務(wù)中。如果一個(gè)現(xiàn)有事務(wù)在運(yùn)行的話,將在這個(gè)方法運(yùn)行期間被掛起。
          7)PROPAGATION_SUPPORTS
          表示當(dāng)前方法不需要事務(wù)處理環(huán)境,但如果有一個(gè)事務(wù)已經(jīng)在運(yùn)行的話,這個(gè)方法也可以在這個(gè)事務(wù)中運(yùn)行
          2.隔離級(jí)別
          多個(gè)事務(wù)并發(fā)運(yùn)行的關(guān)系。因?yàn)椴l(fā)會(huì)導(dǎo)致以下問(wèn)題
          .臟讀(Dirty read) 一個(gè)事務(wù)讀取了被另一個(gè)事務(wù)改寫(xiě)但還沒(méi)提交的數(shù)據(jù)。
          .不可重復(fù)讀(Nonrepeatable read) 一個(gè)事務(wù)執(zhí)行相同的查詢兩次或兩次以上,但每次查詢結(jié)果都不同時(shí)。這由于另一個(gè)并發(fā)事務(wù)在兩次查詢之間更新了數(shù)據(jù)
          .幻讀(Phantom read)
          當(dāng)一個(gè)事務(wù)讀取幾行記錄后,另一個(gè)并發(fā)事務(wù)插入一些記錄,就發(fā)生了幻讀
          spring定義了以下5種隔離關(guān)系
          1)ISOLATION_DEFAULT
          使用后端數(shù)據(jù)庫(kù)默認(rèn)得隔離級(jí)別
          2)ISOLATION_READ_UNCOMMITTED
          允許你讀取還未提交的改變了的數(shù)據(jù)。可能導(dǎo)致臟讀,不可重復(fù)讀,幻讀
          3)ISOLATION_READ_COMMITTTED
          運(yùn)行在并發(fā)事務(wù)已經(jīng)提價(jià)后讀取。可防止臟讀,但不可重復(fù)讀,幻讀都有可能發(fā)生
          4)ISOLATION_REPEATABLE_READ
          對(duì)相同字段的多次讀取結(jié)果是一致的,除非數(shù)據(jù)被事務(wù)本身。可防止臟讀,不可重復(fù)讀,但幻讀仍可能發(fā)生。
          5)ISOLATION_SERIALIZABLE
          完全服從ACID的隔離級(jí)別,確保不發(fā)生臟讀,不可重復(fù)讀,幻讀。它的典型做法就是完全鎖定在事務(wù)中涉及的數(shù)據(jù)表。因此它是最慢地。
          3.只讀提示
          通過(guò)只讀屬性,數(shù)據(jù)庫(kù)可以對(duì)事務(wù)進(jìn)行優(yōu)化。
          4.事務(wù)超時(shí)時(shí)間
          設(shè)置了的話,事務(wù)在超過(guò)這個(gè)時(shí)間后就自動(dòng)回滾。避免占用資源過(guò)久。
          posted on 2006-11-17 10:22 周銳 閱讀(239) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Spring
          主站蜘蛛池模板: 来宾市| 泽普县| 边坝县| 张家川| 格尔木市| 瑞丽市| 桂林市| 聂荣县| 保亭| 鄂温| 玉门市| 西盟| 班玛县| 斗六市| 沙田区| 台湾省| 板桥市| 酒泉市| 从化市| 闸北区| 甘南县| 阿拉善盟| 奇台县| 屯昌县| 沁阳市| 科技| 文山县| 漠河县| 那坡县| 溧阳市| 龙州县| 海林市| 日照市| 陇南市| 亳州市| 周口市| 增城市| 中山市| 紫金县| 平果县| 江津市|