一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java事務回滾失敗問題分析

java事務回滾失敗問題分析

2021-03-14 12:17nice丿love Java教程

這篇文章主要介紹了java事務回滾失敗問題分析,具有一定借鑒價值,需要的朋友可以參考下

Spring-Java事物回滾失效處理最近在做項目中,無意間發現有個類在拋事物回滾操作,數據也正常的插入到數據庫當中了,于是仔細查看看一下具體原因。

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

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

最簡單的判斷點有兩個:

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

2.對非檢查型類異常可以不用捕獲,而檢查型異常則必須用try……catch語句塊進行處理或者把異常交給上級方法處理,總之就是必須寫代碼處理它。

Java的異常結構如下圖。其中直接繼承Exception的異常,必須捕獲,屬于檢查型異常。

java事務回滾失敗問題分析

再回過來看我的代碼:

1、方法名前面有

java" id="highlighter_690519">
?
1
@Transactional

2、Spring的配置文件applicationContext-XXX.xml當中也有Spring事物的相關配置

?
1
2
3
4
5
<bean id="transactionManager"
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
  <property name="rollbackOnCommitFailure" value="true"></property>
</bean>

但是為什么在Service層方法調用的時候,try……catch拋Exception異常已經提交的事物卻沒有回滾?

查看相關spring的文檔后發現,原來spring聲明式事務管理默認對非檢查型異常和運行時異常進行事務回滾,而對檢查型異常則不進行回滾操作。

代碼中try……catch拋出的Exception異常,屬于檢查型異常,Spring的框架默認是不會進行回滾的。

在編程中對非檢查型類異常可以不用捕獲,而檢查型異常則必須用try語句塊進行處理或者把異常交給上級方法處理總之就是必須寫代碼處理它。

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

?
1
2
3
4
5
6
try{
  …………
} catch (Exception e) {
  …………
  throw new BusinessException(e.getMessage());
}

當然我們還有更簡便的方法來解決這個問題,那就是通過注解參數改變默認的回滾方式。

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

使用例:

@Transaction(noRollbackFor=RuntimeException.class)

@Transaction(RollbackFor=Exception.class)

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

啟示:

這就要求我們在自定義異常的時候,讓自定義的異常繼承自RuntimeException,這樣拋出的時候才會被Spring默認的事務處理準確處理。

總結

以上就是本文關于java事務回滾失敗問題分析的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!

原文鏈接:http://blog.csdn.net/qq_34406670/article/details/78945962

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费大片a一级一级 | 精品一区二区三区免费观看 | 美女的让男人桶爽免费看 | 亚洲精品在看在线观看 | chinese壮直男gay老年人 | 欧美日韩高清不卡一区二区三区 | 亲爱的客栈第二季免费观看完整版 | 天天曰天天干 | 日产精品卡一卡2卡三卡乱码工厂 | 日韩欧美中文字幕一区二区三区 | 啊皇上你好大要知画 | 2018高清国产一道国产 | 日韩每日更新 | 青视频在线| 天天欲色成人综合网站 | ipx-177绝对领域在线观看 | 办公室强行丝袜秘书啪啪 | 日韩精品国产自在欧美 | 亚洲AV无码国产精品色午夜情 | 草莓香蕉榴莲丝瓜秋葵绿巨人在线看 | 从后面撕开老师的丝袜动态图 | 亚州男人的天堂 | 日本高清视频网站www | 成人欧美一区二区三区黑人 | 美女舒服好紧太爽了视频 | 亚洲精品国产AV成人毛片 | 国产网站免费观看 | 美女机机对机机的视频(免费) | 国产小情侣自拍 | 日产乱码卡一卡2卡三卡四福利 | 亚洲视频一区二区在线观看 | 五月色婷婷在线影院 | 青青草一区二区免费精品 | 99精品全国免费7观看视频 | 亚洲邪恶天堂影院在线观看 | 九九精品国产 | 国产欧美亚洲精品第一页青草 | 麻豆网站视频国产在线观看 | 免费视频一区 | 四虎影视网站 | chinesemature精品|