最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java事務(wù)回滾失敗問(wèn)題分析

 更新時(shí)間:2018年01月03日 10:48:22   作者:nice丿love  
這篇文章主要介紹了java事務(wù)回滾失敗問(wèn)題分析,具有一定借鑒價(jià)值,需要的朋友可以參考下

Spring-Java事物回滾失效處理最近在做項(xiàng)目中,無(wú)意間發(fā)現(xiàn)有個(gè)類(lèi)在拋事物回滾操作,數(shù)據(jù)也正常的插入到數(shù)據(jù)庫(kù)當(dāng)中了,于是仔細(xì)查看看一下具體原因。

一切還是要從Java的檢查型異常和非檢查型異常說(shuō)起。

那么什么是檢查型異常什么又是非檢查型異常呢?

最簡(jiǎn)單的判斷點(diǎn)有兩個(gè):

1.繼承自RuntimeException或Error的是非檢查型異常,而繼承自Exception的則是檢查型異常(當(dāng)然,RuntimeException本身也是Exception的子類(lèi))。

2.對(duì)非檢查型類(lèi)異常可以不用捕獲,而檢查型異常則必須用try……catch語(yǔ)句塊進(jìn)行處理或者把異常交給上級(jí)方法處理,總之就是必須寫(xiě)代碼處理它。

Java的異常結(jié)構(gòu)如下圖。其中直接繼承Exception的異常,必須捕獲,屬于檢查型異常。

再回過(guò)來(lái)看我的代碼:

1、方法名前面有

@Transactional 

2、Spring的配置文件applicationContext-XXX.xml當(dāng)中也有Spring事物的相關(guān)配置

<bean id="transactionManager" 
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 
  <property name="dataSource" ref="dataSource" /> 
  <property name="rollbackOnCommitFailure" value="true"></property> 
</bean> 

但是為什么在Service層方法調(diào)用的時(shí)候,try……catch拋Exception異常已經(jīng)提交的事物卻沒(méi)有回滾?

查看相關(guān)spring的文檔后發(fā)現(xiàn),原來(lái)spring聲明式事務(wù)管理默認(rèn)對(duì)非檢查型異常和運(yùn)行時(shí)異常進(jìn)行事務(wù)回滾,而對(duì)檢查型異常則不進(jìn)行回滾操作。

代碼中try……catch拋出的Exception異常,屬于檢查型異常,Spring的框架默認(rèn)是不會(huì)進(jìn)行回滾的。

在編程中對(duì)非檢查型類(lèi)異??梢圆挥貌东@,而檢查型異常則必須用try語(yǔ)句塊進(jìn)行處理或者把異常交給上級(jí)方法處理總之就是必須寫(xiě)代碼處理它。

所以必須在service捕獲異常,然后再次手動(dòng)throw一個(gè)非檢查型異常,這樣事務(wù)方才起效。例如:

try{ 
  ………… 
} catch (Exception e) { 
  ………… 
  throw new BusinessException(e.getMessage()); 
} 

當(dāng)然我們還有更簡(jiǎn)便的方法來(lái)解決這個(gè)問(wèn)題,那就是通過(guò)注解參數(shù)改變默認(rèn)的回滾方式。

在@Transaction注解中定義了noRollbackFor和RollbackFor來(lái)指定某種異常是否回滾。

使用例:

@Transaction(noRollbackFor=RuntimeException.class)

@Transaction(RollbackFor=Exception.class)

所以上述的問(wèn)題可以直接將@Transaction添加回滾參數(shù)@Transaction(RollbackFor=Exception.class),這樣就改變了默認(rèn)的事務(wù)處理方式。

啟示:

這就要求我們?cè)谧远x異常的時(shí)候,讓自定義的異常繼承自RuntimeException,這樣拋出的時(shí)候才會(huì)被Spring默認(rèn)的事務(wù)處理準(zhǔn)確處理。

總結(jié)

以上就是本文關(guān)于java事務(wù)回滾失敗問(wèn)題分析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專(zhuān)題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • Spring Boot連接超時(shí)導(dǎo)致502錯(cuò)誤的實(shí)戰(zhàn)案例

    Spring Boot連接超時(shí)導(dǎo)致502錯(cuò)誤的實(shí)戰(zhàn)案例

    這篇文章主要給大家介紹了關(guān)于Spring Boot連接超時(shí)導(dǎo)致502錯(cuò)誤的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • java 數(shù)據(jù)類(lèi)型有哪些取值范圍多少

    java 數(shù)據(jù)類(lèi)型有哪些取值范圍多少

    這篇文章主要介紹了java 數(shù)據(jù)類(lèi)型有哪些取值范圍多少的相關(guān)資料,網(wǎng)上關(guān)于java 數(shù)據(jù)類(lèi)型的資料有很多,不夠全面,這里就整理下,需要的朋友可以參考下
    2017-01-01
  • 深入了解Java設(shè)計(jì)模式之UML類(lèi)圖

    深入了解Java設(shè)計(jì)模式之UML類(lèi)圖

    UML?即?Unified?Modeling?Language?統(tǒng)一建模語(yǔ)言,是用來(lái)設(shè)計(jì)軟件的可視化建模語(yǔ)言。本文就帶大家了解一下UML中類(lèi)圖的定義與使用,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-11-11
  • Spring和IDEA不推薦使用@Autowired?注解原因解析

    Spring和IDEA不推薦使用@Autowired?注解原因解析

    這篇文章主要為大家介紹了Spring和IDEA不推薦使用@Autowired?注解原因解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • springMVC框架下JQuery傳遞并解析Json數(shù)據(jù)

    springMVC框架下JQuery傳遞并解析Json數(shù)據(jù)

    json作為一種輕量級(jí)的數(shù)據(jù)交換格式,在前后臺(tái)數(shù)據(jù)交換中占據(jù)著非常重要的地位,這篇文章主要介紹了springMVC框架下JQuery傳遞并解析Json數(shù)據(jù),有興趣的可以了解一下。
    2017-01-01
  • Java編程實(shí)現(xiàn)直接插入排序代碼示例

    Java編程實(shí)現(xiàn)直接插入排序代碼示例

    這篇文章主要介紹了Java編程實(shí)現(xiàn)直接插入排序代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Java前后端分離項(xiàng)目跨域問(wèn)題解決方案

    Java前后端分離項(xiàng)目跨域問(wèn)題解決方案

    本文主要介紹了Java前后端分離項(xiàng)目跨域問(wèn)題解決方案,其中后端基于SpringBoot,前端使用了jQuery、axios等框架,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Java實(shí)現(xiàn)截圖小工具的完整代碼

    Java實(shí)現(xiàn)截圖小工具的完整代碼

    這篇文章主要介紹了Java實(shí)現(xiàn)截圖小工具的完整代碼,用Java的圖形用戶(hù)界面GUI技術(shù)寫(xiě)了一個(gè)電腦截圖小工具,本程序代碼簡(jiǎn)單,涉及到異常處理,事件處理,圖形用戶(hù)界面等,需要的朋友可以參考下
    2022-05-05
  • Mybatis批量修改的操作代碼

    Mybatis批量修改的操作代碼

    這篇文章主要介紹了Mybatis批量修改的操作代碼,包括整體批量修改的詳細(xì)代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2017-09-09
  • spring?boot入門(mén)之誕生背景及優(yōu)勢(shì)影響

    spring?boot入門(mén)之誕生背景及優(yōu)勢(shì)影響

    這篇文章主要為大家描述說(shuō)明了介紹了spring?boot誕生的背景以及其產(chǎn)生的優(yōu)勢(shì)影響,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03

最新評(píng)論

崇信县| 兴义市| 香河县| 故城县| 娱乐| 焦作市| 山西省| 文成县| 天台县| 涡阳县| 金阳县| 五家渠市| 枣强县| 渑池县| 湘潭县| 鸡泽县| 囊谦县| 绿春县| 南开区| 新乡县| 宁国市| 建平县| 辽源市| 怀柔区| 萝北县| 岫岩| 浪卡子县| 奎屯市| 黄山市| 桂林市| 怀集县| 临海市| 临泽县| 台山市| 武威市| 邳州市| 濮阳市| 志丹县| 昌都县| 龙泉市| 芦溪县|