看了一下springboot的事物办理,今天总结一下,记实一下利用的体例,很简单,一个简单的注解就可以搞心猿意马了, @Transactional
颠末测试发现:
(1)若是不加Transactional注解,则对数据库的操作会当即更新,之后若是抛出异常也不会回滚;申明,默认环境下,是没有事物的。
(2)若是加上Transactional注解,在数据库更新语句之后抛出RuntimeException,则会更新不当作功,申明,事物生效了。
(3)一个重点:当利用事物时,呈现了RuntimeException和Error时,则事物会回滚。checked exceptions不会回滚(因为java强制对会抛出checked exceptions的代码利用try catch;想回滚,可以在catch中抛出前面的异常和错误)
(4)下面经由过程源码简单的总结Transactional注解的默认设置装备摆设,及测试的过程。
东西/原料
- Transactional
- ecplise
方式/步调
- 1
先看Transactional注解的源码
(1)源码注释中说:当利用了此注解,碰到了RuntimeException和Error时会回滚。checked exceptions不会回滚。
- 2
(2)按照Target属性可知,这个注解可以用于润色方式、类、接口(包罗注解)、列举类型;一般环境下,最好用到service层的方式上,一个营业一个事物。
- 3
(3)默认的事物传布机制:REQUIRED。当前没有事物则开启一个新的事物;当前有事物则插手到这个已有的事物中。
- 4
(4)只读事物Transactional(readOnly=true):其实一向质疑只读事务的感化(一向觉着没啥用),然后网上找了一下都说是因为,统一个营业中对一条数据多次查询时,有可能这多次查询的时候距离中该数据被其他用户点窜,导致前后查询到的数据纷歧致,想想很有事理;用只读事物就可以解决这个问题,包管数据的前后一致性。(若是想避免这个问题,也在代码中只读一次,避免多次读)。
- 5
然后测试Transactional注解的感化:
(1)不开启事物,在保留方式中抛出RuntimeException,发现可以保留数据。
- 6
(2)开启事物,在保留方式中抛出RuntimeException,发现此时保留不了数据。
来源:百闻(微信/QQ号:9397569),转载请保留出处和链接!
本文链接:https://www.ibaiwen.com/web/236919.html
- 上一篇: Excel 2016怎么保存新建的工作簿
- 下一篇: 怎么将exe程序注册成系统服务
- 热门文章
-
WB蒙特利尔(WB Montreal)——欧美十大最差视频游戏开发商
迅猛龙(Velociraptor)——欧美史前十大死亡动物
什么是果酱猫(What Marmalade Cats)?
神奇蜘蛛侠2(The Amazing Spider-Man 2)——欧美最佳蜘蛛侠电影
希瑟(Heather)——欧美十大最佳柯南灰歌
二人梭哈
faceu激萌怎么把瘦脸开到最大
奥兹奥斯本(Ozzy Osbourne)——欧美十大高估歌手
什么是小脑前下动脉(Anterior Inferior Cerebellar Artery)?
我应该知道康涅狄格州的什么(What Should I Know About Connecticut)?
- 热评文章
- 最新评论
-
- 最近访客
-
- 站点信息
-
- 文章总数:200248
- 页面总数:9
- 分类总数:1
- 标签总数:0
- 评论总数:0
- 浏览总数:497