0
点赞
收藏
分享

微信扫一扫

Spring事务(事务的实现、隔离级别、传播机制)

追梦人的自留地 2023-01-22 阅读 133

目录

 一、事务的定义和意义

二、事务的实现

1、MySQL事务的回顾

2、Spring声明式事务(利⽤注解⾃动开启和提交事务)

前置知识及概念

实例分析:事务的回滚

🔔特殊情况(无自动回滚)

🔔事务不会⾃动回滚解决⽅案

🔔@Transactional工作原理

@Transactional 实现思路预览:  

三、Spring事务传播机制 

1、事务的隔离级别及传播机制的引入

2、事务的传播机制

3、事务的隔离级别和事务的传播机制的区别


 一、事务的定义和意义

二、事务的实现

1、MySQL事务的回顾

2、Spring声明式事务(利⽤注解⾃动开启和提交事务)

前置知识及概念

Spring的事务管理默认是针对***unchecked exception**回滚,也就是默认对Error异常和RuntimeException异常以及其子类进行事务回滚,且必须抛出异常,若使用try-catch对其异常捕获则不会进行事务回滚操作

因此

关于异常详情见:异常

实例分析:事务的回滚

 我们通过url模拟添加操作

那么如果出现了异常,数据库中会不会添加这一条就记录呢?

 可以看到,我们再浏览器的url输入的lisi这条记录,没有成功添加到数据库中。

原因就是@Transactional 注解的自动回滚操作——》通过该注解,我们⽆需⼿动开启事务和提交事务,进⼊⽅法时⾃动开启事务,⽅法执⾏完会⾃动提交事务,如果中途发⽣了没有处理的异常会⾃动回滚事务

🔔特殊情况(无自动回滚)

我们再浏览器里继续上面的操作(尝试添加一条lisi的记录,看看有什么变化)

 

可以看到数据库中有了lisi这条数据——》@Transactional 在异常被捕获的情况下,不会进⾏事务⾃动回滚。

🔔事务不会⾃动回滚解决⽅案

🔔@Transactional工作原理

@Transactional 实现思路预览:  

三、Spring事务传播机制 

1、事务的隔离级别及传播机制的引入

Spring 中事务隔离级别包含以下 5 种

从上述介绍可以看出,相⽐于 MySQL 的事务隔离级别,Spring 的事务隔离级别只是多了⼀个
Isolation.DEFAULT(以数据库的全局事务隔离级别为主)

 

 为什么需要事务的传播机制

  • 事务隔离级别是保证多个并发事务执⾏的可控性的(稳定性的).
  • 而事务传播机制,是保证⼀个事务在多个调⽤⽅法间的可控性的(稳定性的) 

2、事务的传播机制

Spring 事务传播机制包含以下 7 种: 

 

 

REQUIRED需要有(事务的默认传播机制)和NESTED嵌套事务的区别:

3、事务的隔离级别和事务的传播机制的区别

事务隔离级别解决的是多个事务同时调⽤⼀个数据库的问题

 

 

 事务传播机制解决的是⼀个事务在多个节点(⽅法)中传递的问题(或多个事务的嵌套和互相加入)

参考文章:

SpringBoot 使用 @Transactional 注解配置事务_深寒色的猫丶的博客-CSDN博客

 JavaEE进阶 - Spring事务和事务传播机制 - 细节狂魔_java事务传播机制_Dark And Grey的博客-CSDN博客

举报

相关推荐

0 条评论