springboot 2.0 教程-06-开启事务管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31922571/article/details/84873329

阅读原文:https://blog.bywind.cn/articles/2018/11/28/1543373589258.html
视频教程:https://www.bilibili.com/video/av35595465
课程源码:https://github.com/ibywind/springboot-learn
关注公众号 查看更多技术干货
还可加群 , 众多好基友在等你
mpjpg

springboot 书籍 PDF 下载

扫描关注上方公众号
回复关键字 boot
就可以下载这本书了
书籍的排版很好的,我自己也在看.大家可以一起交流哦
1_png

写在前面

hello 大家好

欢迎大家收看御风大世界

本次课是

springboot 系列教程第6课

我将为大家演示

springboot 如何开启数据库事务管理

什么是事务?

举个简单的例子

银行转账

A转出100

B转入100

事务的作用就是

A , B 要么同时成功,要么同时失败

不允许存在 中间状态 (A没损失, B却收入了)

事务的几个知识点

ACID指的是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)

原子性:操作这些指令时,要么全部执行成功,要么全部不执行。只要其中一个指令执行失败,所有的指令都执行失败,数据进行回滚,回到执行指令前的数据状态。

一致性:事务的执行使数据从一个状态转换为另一个状态,但是对于整个数据的完整性保持稳定。

隔离性:在该事务执行的过程中,无论发生的任何数据的改变都应该只存在于该事务之中,对外界不存在任何影响。只有在事务确定正确提交之后,才会显示该事务对数据的改变。其他事务才能获取到这些改变后的数据。

持久性:当事务正确完成后,它对于数据的改变是永久性的。

在多个事务操作的过程中

还需要 保证 事务的隔离级别

比如以下几个例子 就是没有 使用对应的隔离机制导致的

mysql事务的隔离级别

springboot事务管理

基于注解,很简单的

在boot入口程序加一个 EnableTransactionManagement 的注解

就启动事务管理器了

通常 我们会 把我们的 事务注解 放到 service impl 这一层

因为 DAO 都是单一功能 原子操作

而 某个 service方法 可能会用到

多个 Dao 方法 或者是 多个DAO 的 多个方法

来完成一个功能

我们把注解放到 service 实现类上

那么整个 类的 操作 每一个方法 都会支持事务

spring 事务 存在 传播行为 , 隔离级别 , 异常回滚等等

大家可以 去参看 这个 注解的 源代码 , 里面有很详细的描述

我们可以把这个注解放到 类上 也可以放到 具体的方法上 .

他的级别是这样的

方法级别 > 类级别 > 统一配置级别(通配级别)

具体某个方法的配置和上面演示的 类的配置 差不多

大家可以自己尝试下

统一事务配置

我们实际的开发过程中

会有很多 service实现类

我们不可能 把 事务这样一个 本可以统一规范的 约束

放到每一个类 甚至是 每一个方法中

我们之前做springmvc 的时候 用到的事务控制是这样的

其主要是 通过spring AOP 切面技术

只要我们按照自己配置的 方法名称通配

就可以实现 一次配置事务管理

而不必像 上文中讲到的

一个类 一个方法上 加一个注解

我们知道

spring 利用xml 实现的事情

都可以改到 .java 文件 来编码实现的

我们定义一个注解

然后将我们的 事务管理器 引入进来

整体的一个实现代码是这样的

通过这样一个 切面 统一配置类

我们就实现了

类似之前 springmvc 时代

xml 文件配置事务切面的 功能

结束语

如果大家对于这里比较感兴趣的话

可以去B站查看我的视频讲解

https://space.bilibili.com/193580090/#/

或者是在 github下载源码

https://github.com/ibywind/springboot-learn

猜你喜欢

转载自blog.csdn.net/qq_31922571/article/details/84873329
今日推荐