首页 > 电脑专区 > windows >

springboot事物管理@Transactional

来源:互联网 2023-02-21 16:29:00 版权归原作者所有,如有侵权,请联系我们

看了一下springboot的事物管理,今天总结一下,记录一下使用的方式,很简单,一个简单的注解就可以搞定了, @TransactionalQ1H办公区 - 实用经验教程分享!

经过测试发现:Q1H办公区 - 实用经验教程分享!

(1)如果不加Transactional注解,则对数据库的操作会立即更新,之后如果抛出异常也不会回滚;说明,默认情况下,是没有事物的。Q1H办公区 - 实用经验教程分享!

(2)如果加上Transactional注解,在数据库更新语句之后抛出RuntimeException,则会更新不成功,说明,事物生效了。Q1H办公区 - 实用经验教程分享!

(3)一个重点:当使用事物时,出现了RuntimeException和Error时,则事物会回滚。checked exceptions不会回滚(因为java强制对会抛出checked exceptions的代码使用try catch;想回滚,可以在catch中抛出前面的异常和错误)Q1H办公区 - 实用经验教程分享!

(4)下面通过源码简单的总结Transactional注解的默认配置,及测试的过程。Q1H办公区 - 实用经验教程分享!

工具/原料

  • Transactional
  • ecplise

方法/步骤

  • 1

    先看Transactional注解的源码Q1H办公区 - 实用经验教程分享!

    (1)源码注释中说:当使用了此注解,遇到了RuntimeException和Error时会回滚。checked exceptions不会回滚。Q1H办公区 - 实用经验教程分享!

    springboot事物管理@TransactionalQ1H办公区 - 实用经验教程分享!

  • 1此文章未经授权抓取自百度经验
  • 2

    (2)根据Target属性可知,这个注解可以用于修饰方法、类、接口(包括注解)、枚举类型;一般情况下,最好用到service层的方法上,一个业务一个事物。Q1H办公区 - 实用经验教程分享!

    springboot事物管理@TransactionalQ1H办公区 - 实用经验教程分享!

  • 3

    (3)默认的事物传播机制:REQUIRED。当前没有事物则开启一个新的事物;当前有事物则加入到这个已有的事物中。Q1H办公区 - 实用经验教程分享!

    springboot事物管理@TransactionalQ1H办公区 - 实用经验教程分享!

  • 4

    (4)只读事物Transactional(readOnly=true):其实一直质疑只读事务的作用(一直觉着没啥用),然后网上找了一下都说是因为,同一个业务中对一条数据多次查询时,有可能这多次查询的时间间隔中该数据被其他用户修改,导致前后查询到的数据不一致,想想很有道理;用只读事物就可以解决这个问题,保证数据的前后一致性。(如果想避免这个问题,也在代码中只读一次,避免多次读)。Q1H办公区 - 实用经验教程分享!

    springboot事物管理@TransactionalQ1H办公区 - 实用经验教程分享!

  • 5

    然后测试Transactional注解的作用:Q1H办公区 - 实用经验教程分享!

    (1)不开启事物,在保存方法中抛出RuntimeException,发现可以保存数据。Q1H办公区 - 实用经验教程分享!

    springboot事物管理@TransactionalQ1H办公区 - 实用经验教程分享!

    springboot事物管理@TransactionalQ1H办公区 - 实用经验教程分享!

    springboot事物管理@TransactionalQ1H办公区 - 实用经验教程分享!

  • 6

    (2)开启事物,在保存方法中抛出RuntimeException,发现此时保存不了数据。Q1H办公区 - 实用经验教程分享!

    springboot事物管理@TransactionalQ1H办公区 - 实用经验教程分享!

    springboot事物管理@TransactionalQ1H办公区 - 实用经验教程分享!

    springboot事物管理@TransactionalQ1H办公区 - 实用经验教程分享!

  • 以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Q1H办公区 - 实用经验教程分享!


    标签: 操作系统管理

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号