<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    積累,創(chuàng)造,分享!

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      25 Posts :: 13 Stories :: 26 Comments :: 0 Trackbacks

    在目前使用的現(xiàn)有框架當(dāng)中,利用springAOP機(jī)制來(lái)控制事務(wù)處理是目前最流行的一種控制事務(wù)的方式。

    但是我們?cè)谀撤N使用場(chǎng)合的過(guò)程中,為什么有時(shí)事務(wù)處理老是不起作用呢?這里,為您道出原因之一,

    首先請(qǐng)看一段話

    Spring的事務(wù)實(shí)現(xiàn)采用基于AOP的攔截器來(lái)實(shí)現(xiàn),如果沒(méi)有在事務(wù)配置的時(shí)候注明回滾的checked exception,那么只有在發(fā)生了unchecked exception的時(shí)候,才會(huì)進(jìn)行事務(wù)回滾。

    有必要先解釋一下checked exceptionunchecked exception

    先看看EXCEPTIONJDK文檔當(dāng)中的結(jié)構(gòu)

    java.lang.Object
      繼承者 java.lang.Throwable
          繼承者 java.lang.Exception
              繼承者 java.lang.RuntimeException
     
    Unchecked exception: 這類(lèi)異常都是RuntimeException的子類(lèi),雖然RuntimeException同樣也是Exception的子類(lèi),但是它們是特殊的。Exception是作為checked Exception 出現(xiàn)的。
    所以,除了ErrorRuntimeException,其他剩下的異常都是你需要關(guān)心的,而這些異常類(lèi)統(tǒng)稱(chēng)為Checked Exception
     

    有了以上的基礎(chǔ),看看我們框架當(dāng)中的事務(wù)屬性

    <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>

     

    此處,我們沒(méi)有指定任何異常,那么它目前默認(rèn)處理的就是unchecked exception了,再結(jié)合我們自身每個(gè)項(xiàng)目的模塊,在我們的每個(gè)項(xiàng)目當(dāng)中幾乎都定義了自己的異常,這些異常都是繼承自Exception,很不幸的是,我們繼承的Exception包括自己定義的異常,都是checked exception

     

    所以,在我們的事務(wù)處理機(jī)制當(dāng)中,事務(wù)不管用了。

    解決辦法有2個(gè):

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

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

    (nighthawk)

    posted on 2007-07-09 09:32 nighthawk 閱讀(2092) 評(píng)論(3)  編輯  收藏

    Feedback

    # re: 誰(shuí)讓事務(wù)控制不起作用了? 2007-07-10 10:14 tozx96
    你說(shuō)的“在我們的事務(wù)處理機(jī)制當(dāng)中,事務(wù)不管用了你說(shuō)的”,是指出現(xiàn)chedked exception時(shí)也會(huì)被commit,還是說(shuō)根本就不commit?  回復(fù)  更多評(píng)論
      

    # re: 誰(shuí)讓事務(wù)控制不起作用了? 2007-07-10 13:35 nighthawk
    事務(wù)不起作用的情況下當(dāng)然是commit了.  回復(fù)  更多評(píng)論
      

    # re: 誰(shuí)讓事務(wù)控制不起作用了? 2007-07-12 11:27 Scott.Pan
    分析的不錯(cuò),收藏了。期待關(guān)于事務(wù)處理的更多精辟見(jiàn)解。  回復(fù)  更多評(píng)論
      


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久久久亚洲精品中文字幕| 国产99视频精品免费视频76| 亚洲国产成人久久99精品| 亚洲AV日韩AV鸥美在线观看| 久久精品九九亚洲精品天堂| 亚洲国产AV无码专区亚洲AV| 亚洲精品乱码久久久久久按摩| 亚洲中文字幕久久精品无码喷水 | 久久经典免费视频| 国产92成人精品视频免费| 国产在线观看麻豆91精品免费 | 久久精品国产亚洲AV未满十八| 亚洲人成色在线观看| 亚洲av乱码中文一区二区三区| 国产精品亚洲精品爽爽| 免费无码又爽又黄又刺激网站 | 亚洲一区在线免费观看| 狠狠色香婷婷久久亚洲精品| 亚洲色成人WWW永久在线观看| 亚洲AV日韩综合一区| 无码免费又爽又高潮喷水的视频| 免费人妻精品一区二区三区| 国产精品无码免费专区午夜| 三年片在线观看免费| 57pao国产成视频免费播放 | 青柠影视在线观看免费| 久久99国产乱子伦精品免费| 成人免费毛片内射美女-百度| 日韩a在线观看免费观看| 亚洲精品成人片在线观看| 亚洲va中文字幕无码久久不卡| 7777久久亚洲中文字幕蜜桃| 久久精品国产亚洲av麻豆蜜芽| 亚洲爆乳大丰满无码专区| a级毛片免费观看网站| 91av在线免费视频| 天天摸夜夜摸成人免费视频 | 成年人性生活免费视频| 亚洲精品WWW久久久久久| 精品亚洲成a人片在线观看| 亚洲日韩精品无码专区|