posts - 431,  comments - 344,  trackbacks - 0
          1.傳播行為
          定義了關于客戶端和被調用方法的事務邊界。傳播規則就是在說明新的事務是否要被啟動或是掛起,或者方法是否要在事務環境中運行。
          spring定義了7種不同的傳播行為。
          1)PROPAGATION_MANDATORY
             表明方法必須要在事務中運行。如果事務不存在,拋出異常
          2)PROPAGATION_NESTED
             表示如果當前已經存在一個事務,則該方法應當運行在一個嵌套的事務中。被嵌套的事務可以從當前事務中單獨地提交或回滾。如果當前事務不存在,就相當于PROPAGATION_REQUIRED
          3)PROPAGATION_NEVER
            表示當前的方法不應該運行在一個事務上下文中。如果當前存在一個事務,則會拋出一個異常。
          4)PROPAGATION_NOT_SUPPORTED
          表示該方法不應該在事務中運行。如果一個現有的事務正在運行中。它將在該方法的運行期間被掛起
          5)PROPAGATION_REQUIRED
          表示當前方法必須運行在一個事務中。如果一個現有的事務正在運行中,該方法將運行在這個事務中。否則的話,就要開始一個新的事務。
          6)PROPAGATION_REQUIRES_NEW
          表示當前方法必須運行在它自己的事務中。如果一個現有事務在運行的話,將在這個方法運行期間被掛起。
          7)PROPAGATION_SUPPORTS
          表示當前方法不需要事務處理環境,但如果有一個事務已經在運行的話,這個方法也可以在這個事務中運行
          2.隔離級別
          多個事務并發運行的關系。因為并發會導致以下問題
          .臟讀(Dirty read) 一個事務讀取了被另一個事務改寫但還沒提交的數據。
          .不可重復讀(Nonrepeatable read) 一個事務執行相同的查詢兩次或兩次以上,但每次查詢結果都不同時。這由于另一個并發事務在兩次查詢之間更新了數據
          .幻讀(Phantom read)
          當一個事務讀取幾行記錄后,另一個并發事務插入一些記錄,就發生了幻讀
          spring定義了以下5種隔離關系
          1)ISOLATION_DEFAULT
          使用后端數據庫默認得隔離級別
          2)ISOLATION_READ_UNCOMMITTED
          允許你讀取還未提交的改變了的數據。可能導致臟讀,不可重復讀,幻讀
          3)ISOLATION_READ_COMMITTTED
          運行在并發事務已經提價后讀取。可防止臟讀,但不可重復讀,幻讀都有可能發生
          4)ISOLATION_REPEATABLE_READ
          對相同字段的多次讀取結果是一致的,除非數據被事務本身。可防止臟讀,不可重復讀,但幻讀仍可能發生。
          5)ISOLATION_SERIALIZABLE
          完全服從ACID的隔離級別,確保不發生臟讀,不可重復讀,幻讀。它的典型做法就是完全鎖定在事務中涉及的數據表。因此它是最慢地。
          3.只讀提示
          通過只讀屬性,數據庫可以對事務進行優化。
          4.事務超時時間
          設置了的話,事務在超過這個時間后就自動回滾。避免占用資源過久。
          posted on 2006-11-17 10:22 周銳 閱讀(239) 評論(0)  編輯  收藏 所屬分類: Spring
          主站蜘蛛池模板: 准格尔旗| 财经| 大连市| 鄢陵县| 钟祥市| 社旗县| 云阳县| 健康| 临海市| 宁阳县| 平远县| 商洛市| 浑源县| 乌拉特后旗| 延边| 舒城县| 太仆寺旗| 九江县| 安新县| 页游| 元谋县| 常德市| 宝山区| 金昌市| 凤阳县| 聂拉木县| 江津市| 苏州市| 彭州市| 英吉沙县| 水富县| 绥棱县| 安陆市| 六枝特区| 安庆市| 钟祥市| 资阳市| 宕昌县| 玉田县| 通榆县| 木兰县|