posts - 27,  comments - 14,  trackbacks - 0

          在目前使用的現有框架當中,利用springAOP機制來控制事務處理是目前最流行的一種控制事務的方式。

          但是我們在某種使用場合的過程中,為什么有時事務處理老是不起作用呢?這里,為您道出原因之一,

          首先請看一段話:

          Spring的事務實現采用基于AOP的攔截器來實現,如果沒有在事務配置的時候注明回滾的checked exception,那么只有在發生了unchecked exception的時候,才會進行事務回滾。

          有必要先解釋一下checked exceptionunchecked exception

          先看看EXCEPTIONJDK文檔當中的結構:

          java.lang.Object

            繼承者 java.lang.Throwable
                繼承者 java.lang.Exception
                    繼承者 java.lang.RuntimeException
          Unchecked exception: 這類異常都是RuntimeException的子類,雖然RuntimeException同樣也是Exception的子類,但是它們是特殊的。Exception是作為checked Exception 出現的。
          所以,除了ErrorRuntimeException,其他剩下的異常都是你需要關心的,而這些異常類統稱為Checked Exception

          有了以上的基礎,看看我們框架當中的事務屬性:

          <property name="transactionAttributes">

                               <props>

                                      <prop key="get*">PROPAGATION_REQUIRED,readOnly </prop>

                                      <prop key="save*">PROPAGATION_REQUIRED </prop>

                                      <prop key="delete*">PROPAGATION_REQUIRED</prop>

                                      <prop key="update*">PROPAGATION_REQUIRED </prop>

                               </props>

           

          </property>

          此處,我們沒有指定任何異常,那么它目前默認處理的就是unchecked exception了,再結合我們自身每個項目的模塊,在我們的每個項目當中幾乎都定義了自己的異常,這些異常都是繼承自Exception,很不幸的是,我們繼承的Exception包括自己定義的異常,都是checked exception

           

          所以,在我們的事務處理機制當中,事務不管用了。

          解決辦法有2個:

          1,在事務屬性后面加上需要回滾的checked exception。比如<prop key="save*">PROPAGATION_REQUIRED,-XXXXException</prop>(注意那個"-",對應的是"+")

          2, 不改配置文件,將需要事務回滾的異常繼承自unchecked exception類,也就是RuntimeException

          (本文轉自:http://www.aygfsteel.com/nighthawk/archive/2007/07/09/128974.html

          posted on 2007-07-12 11:25 Scott.Pan 閱讀(357) 評論(0)  編輯  收藏 所屬分類: SSH

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2007年7月>
          24252627282930
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 双柏县| 天柱县| 常德市| 沂南县| 紫云| 岫岩| 上虞市| 内江市| 红原县| 湘阴县| 伊川县| 普陀区| 宁都县| 历史| 景洪市| 西峡县| 永济市| 蒲江县| 绩溪县| 香港| 邢台市| 德保县| 巴林右旗| 冷水江市| 西宁市| 辽阳县| 宣城市| 五华县| 永寿县| 克拉玛依市| 普兰县| 西吉县| 鹿泉市| 无极县| 岳普湖县| 聂拉木县| 嘉黎县| 随州市| 嫩江县| 武邑县| 泸西县|