spring里面事务梳理

本文介绍了Spring框架中的本地事务概念,强调了其原子性、一致性、隔离性和持久性的特性,以及如何通过@Transactional注解进行事务控制。此外,还提到了阿里巴巴开源的分布式事务解决方案Seata及其在SpringCloud中的集成和部署方式,重点讲解了`@GlobalTransactional`注解的使用。
摘要由CSDN通过智能技术生成

1.本地事务

本地事务:本地事务其实就是说的是我们传统的单体服务下的数据库事务

事务的四大特性:

A(Atomic):原子性,构成事务的所有操作,要么都执行完成,要么全部不执行,不可能出现部分成功部分失 败的情况。
C(Consistency):一致性,在事务执行前后,数据库的一致性约束没有被破坏。
I(Isolation):隔离性,数据库中的事务一般都是并发的,隔离性是指并发的两个事务的执行互不干扰,一个事 务不能看到其他事务运行过程的中间状态。通过配置事务隔离级别可以避脏读、重复读等问题。
D(Durability):持久性,事务完成之后,该事务对数据的更改会被持久化到数据库,且不会被回滚。

一般我们都是采用spring框架进行开发,所以一般情况都是spring帮我们代理了数据库的事务,比如我们常见的在业务层加上@Transactional注解标识开启事务。

在项目中,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。

在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚

如果某方法加了@Transactional(notRollbackFor=RunTimeException.class)这个注解,那么该方法在运行时异常不会回滚。

属性解释

属性	                   类型	                           		 描述
value	                   String	                             可选的限定描述符,指定使用的事务管理器
propagation	               enum: Propagation	                 可选的事务传播行为设置
isolation	               enum: Isolation	                     可选的事务隔离级别设置
readOnly	               boolean	                             读写或只读事务,默认读写
timeout	                   int (in seconds granularity)	   		 事务超时时间设置
rollbackFor	               lass对象数组,必须继承自Throwable	     导致事务回滚的异常类数组
rollbackForClassName	   类名数组,必须继承自Throwable	   	     导致事务回滚的异常类名字数组
noRollbackFor	           Class对象数组,必须继承自Throwable	 不会导致事务回滚的异常类数组    
noRollbackForClassName	   类名数组,必须继承自Throwable	         不会导致事务回滚的异常类名字数组

2.分布式事务

Alibaba Seata
为阿里开源分布式事务解决方案,对业务代码入侵很小,其核心就是一个注解" @GlobalTransactional ",Seata有3个基本组成部分:

SpringCloud整合Seata1.6.1部署与使用Nacos方式

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

java攻城狮1024

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值