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.mzph.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…