jpa transaction 回滾_我遇到的JPA中事務回滾的問題

在最近的項目中,做的是解析XML文件,解析過程中會有異常,比如:XML文件中節點的數據和與之對應的數據庫的字段中數據的類型不匹配;XML中數據長度超過數據庫定義的長度;有數據了的重復插入問題;讀取節點出錯;XML文件路徑出錯……會遇到很多異常

我的項目使用的是Spring Boot,Spring Data JPA 其中Spring已經封裝好了事務,在注解@Transactional中,自動執行事務,出異常自動回滾,但在使用的時候會遇到一些問題:

在多個方法中使用@Transactional,其中一個方法運行時候報錯,但是數據卻插進去了,但是其他兩個方法沒有;有時候拋了異常,卻不會回滾;方法嵌套的時候執行報錯……

查閱了一些資料后,得知是沒有正確使用Spring的@Transactional。

下面借用我查到的別人的博客中的例子來說明Spring的@Transactional到底怎么用:

1 @Service2 public classSysConfigService {3

4 @Autowired5 privateSysConfigRepository sysConfigRepository;6

7 publicSysConfigEntity getSysConfig(String keyName) {8 SysConfigEntity entity =sysConfigRepository.findOne(keyName);9 returnentity;10 }11

12 publicSysConfigEntity saveSysConfig(SysConfigEntity entity) {13

14 if(entity.getCreateTime()==null){15 entity.setCreateTime(newDate());16 }17

18 returnsysConfigRepository.save(entity);19

20 }21

22 @Transactional23 public void testSysConfig(SysConfigEntity entity) throwsException {24 //不會回滾

25 this.saveSysConfig(entity);26 throw new Exception("sysconfig error");27

28 }29

30 @Transactional(rollbackFor = Exception.class)31 public void testSysConfig1(SysConfigEntity entity) throwsException {32 //會回滾

33 this.saveSysConfig(entity);34 throw new Exception("sysconfig error");35

36 }37

38 @Transactional39 public void testSysConfig2(SysConfigEntity entity) throwsException {40 //會回滾

41 this.saveSysConfig(entity);42 throw new RuntimeException("sysconfig error");43

44 }45

46 @Transactional47 public void testSysConfig3(SysConfigEntity entity) throwsException {48 //事務仍然會被提交

49 this.testSysConfig4(entity);50 throw new Exception("sysconfig error");51 }52

53 @Transactional(rollbackFor = Exception.class)54 public void testSysConfig4(SysConfigEntity entity) throwsException {55

56 this.saveSysConfig(entity);57 }58

59

60

61 }

對于常用的Spring的@Transactional的總結如下:

1、異常在A方法內拋出,則A方法就得加注解

2、多個方法嵌套調用,如果都有 @Transactional 注解,則產生事務傳遞,默認 Propagation.REQUIRED

3、如果注解上只寫 @Transactional 默認只對 RuntimeException 回滾,而非 Exception 進行回滾

4、如果要對 checked Exceptions 進行回滾,則需要 @Transactional(rollbackFor = Exception.class)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535084.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535084.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535084.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

pb 怎么判斷是 小數_考試90分以上的孩子是怎么學數學的?聽聽老師怎么說?

一二年級,考試上九十分很輕松。但是,不少小朋友一上三年級,成績就落下來了。那么,我們來看看三年級起,考試還能夠保持在90分以上的孩子是怎么學習數學的吧!第一,計算能力過關通過這兩張圖片的對…

快速上手Mybatis-Plus 入門案例

寫在前面🛫更多知識總結見Mybatis-Plus專欄 🚕內容總結自尚硅谷楊博超老師的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客首頁🚀🚀…

交換機分布緩存_網絡交換機緩存在數據中心的作用

什么產生了緩存?網絡交換機要配置多少緩存才夠用?緩存容量是否有標準可以衡量? 當網絡交換機接口收到超出其所能處理的流量后,它會選擇要么將其緩存,或者將其丟棄。 緩存通常都是因為網絡接口速率不同造成的&#xff0…

黑蘋果 選擇語言 點不了_什么是天然的“黑鉆”?—科普貼

天然黑鉆也被成為“碳酸氫”,具有與白鉆相同的化學成分,然而黑鉆石的晶體結構是不同的,這意味著它們由許多小晶體組成,它們以隨機的形式粘在一起,而不是一個具有可識別自然線的固體錐形。天然黑鉆石有極高的含物&#…

sim卡沒壞但蘋果手機無服務_解決手機插SIM卡后都顯示“無SIM卡”的故障問題

故障現象顧客描述手機插SIM卡后都顯示“無SIM卡”。維修過程引起插入SIM卡卻顯示“無SIM卡”的故障,除了可能是SIM卡座的供電、時鐘、復位及SIM卡插入檢測信號不正常導致外,還有可能是基帶不正常導致的。插上手機卡,左上角提示“無SIM卡”&am…

Mybatis-Plus實現簡單的增刪改查 實體類上的注解

寫在前面🛫更多知識總結見Mybatis-Plus專欄 🚕內容總結自尚硅谷楊博超老師的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客首頁🚀🚀…

webpack 讀取文件夾下的文件_webpack基本介紹及使用

1.什么是webpackwebpack是一個前端資源加載/打包工具。它根據模塊的依賴關系進行靜態分析,然后將這些模塊按照指定的規則生成對應的靜態資源。從上圖看出,webpack可以將多種靜態資源js,css,less轉換成一個靜態文件,減少…

conda失敗說沒有寫權限_愛情中,為什么男生表白失敗,女生還說可以繼續做朋友,想過沒有...

在愛情中,不是每個男生都是幸運的,也不是每次的表白都是如你所愿的。有成功總有失敗,成功是喜悅的,但是失敗卻是痛苦的。不過有的時候男生和女生表白以后,女生對男生說了這樣的一段,其實我希望以后我們還是…

Mybatis-Plus中Wrapper條件構造器的使用

寫在前面 🛫更多知識總結見Mybatis-Plus專欄 🚕內容總結自尚硅谷楊博超老師的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客首頁🚀&#x1f680…

springboot設置默認值_線上Bug無法復現?老司機教你一招,SpringBoot遠程調試不用愁!...

前言在部署線上項目時,相信大家都會遇到一個問題,線上的 Bug 但是在本地不會復現,多么無奈。此時最常用的就是取到前端傳遞的數據用接口測試工具測試,比如 POSTMAN,復雜不,難受不?今天陳某教你一…

Mybatis-Plus的分頁 樂觀鎖插件 通用枚舉 多數據源

寫在前面🛫更多知識總結見Mybatis-Plus專欄 🚕內容總結自尚硅谷楊博超老師的視頻 🚒博主對于該知識尚在學習階段 🚄如果發現存在問題請毫不吝嗇的指出 🚀🚀扎哇太棗糕的博客首頁🚀🚀…

學python哪個網站好-有哪些值得推薦的Python學習網站|

現在那個網站可以學習python爬蟲? 為大家分享Python學習經驗: 1、尋找一本Python書籍,要求淺顯易懂、全面細致程較好,專注于這一本,從頭開始研究,把整本書掌握透徹。 2、找一個項目練手,熟悉基礎后&#xf…

等待的操作過時_不會過時的6種網站seo優化操作

SEO優化一直在變化,百度和谷歌的算法也在不斷的迭代更新,所以競爭永遠不會停止。今天小編就來給大家分享一下,6種不會過時的網站seo優化操作。1.保持正常優化為網站訪客提供高質量的內容、卓越的用戶體驗和安全性以及卓越的技術網站。這可能需…

java的for循環取出數據只是拿到最后一個_一問SQL優化就無從藏身?那只是你對原理的精髓掌握不深

?曾幾何時,我信誓旦旦的認為只要 SQL 寫的好,面試過程永不倒。結果在一次又一次的征途中,「最終還是以完敗落下帷幕」。結果都源于注重使用而忽略原理,從而不知也不了解「SQL」優化應如何面對。讀文的你,如今可有這樣…

SpringBoot前后端分離解決跨域問題的三種解決方案

🚀🚀扎哇太棗糕的博客首頁🚀🚀** 文章目錄🍊什么是跨域🍊跨域問題的解決策略🍊三種解決方法🍊什么是跨域 想要知道什么是跨域的話,我們可以通過一個小案例簡單了解一下跨…

ant design vue 樹形控件_官宣!vue.ant.design 低調上線

點擊右上方,關注開源中國OSC頭條號,獲取最新技術資訊官宣!官宣!官宣!是的,你沒看錯就是那個 https://vue.ant.design。至此,Ant Design 已經全面覆蓋了 React、Angular、Vue 三大前端框架&#…

哪款筆記本電腦好_掃地機器人哪個牌子好?口碑最好的掃地機器人

隨著智能家居的普及,讓我們的生活變得越來越智能。掃地機器人的出現完美解決了寵物的毛發問題,為自己騰出了大量的時間。掃地機器人絕對能提升你的生活品質,通過機器內建的智能清潔模式、自定義規劃區域進行打掃,使用手機APP進行控…

使用mybatisplus的通用枚舉實現存儲顯示相分離

狡兔尚且三窟,多學一招總沒錯吧? 🚀🚀扎哇太棗糕的博客首頁🚀🚀 🌏 拋出問題 如果讓你實現這么一個功能:將性別使用數字存儲到數據庫中,但是前端需要獲取到的是具體的性…

wifi卡慢延遲高_家里WiFi特別卡,網絡延遲高,可能不是網速的問題

原標題:家里WiFi特別卡,網絡延遲高,可能不是網速的問題隨著科技走向我們的身邊,網絡的覆蓋力度也是越來越大,相信很多人的家中都是有安裝WiFi的,然后往往在家中使用的過程中都會碰到這樣的情況,…

voc2007數據集_【目標檢測數據集】PASCAL VOC制作

【VOC20072012】數據集地址:https://pjreddie.com/projects/pascal-voc-dataset-mirror/PASCAL VOC為圖像識別和分類提供了一整套標準化的優秀的數據集,用于構建和評估用于圖像分類(Classification),檢測(O…