Spring事务

文章详细阐述了ACID事务的四个特性——原子性、一致性、隔离性和持久性,以及不同事务隔离级别下的并发问题和解决方案。同时,介绍了Spring框架中事务的七种传播行为,包括required、requires_new等,并提到了Spring事务的回滚规则,主要针对运行时异常进行回滚。
摘要由CSDN通过智能技术生成

事务的特性 ACID

A 原子性:事务中不可分割的一个单元,事务中的全部操作要么全部成功,要么全部失败

C 一致性:事务完成时必须一致

I 隔离性:一个事务的执行不受其他事务的影响,也就是一个事务的内部操作和使用的数据对并发的其他事物是隔离的,并发执行的各个事务之间不能相互影响。

D 持久性:一个事务一旦提交,对数据库的修改是永久性的

事务的隔离级别

隔离级别\并发问题出现的原因解决脏读解决不可重复读解决幻读
未提交读(READ_UNCOMMITTEDNNN
已提交读(READ_COMMITTEDYNN
可重复读(REPEATABLE_READ YYN
串行化(SERIALIZABLEYYY

Spring事务的七种传播特性

required:表示如果当前存在一个事务,则加入该事务,否则新建一个事务;(默认)

requires_new:表示不管是否存在事务,都创建一个新的事务,把原来的事务挂起,新的事务执行完毕,继续执行老的事务

supports:如果当前存在事务,就加入该事务,如果没有事务,那就不使用事务。

not_supported:表示不使用事务,如果当前存在事务,就把当前事务暂停,以非事务执行

mandatory:表示必须在一个已有的事务中执行,如果当前没有事务,则抛出异常。

never:表示以非事务方式执行,如果当前存在事务则抛异常

nested:嵌套事务:存在事务则在嵌套事务内执行;不存在事务则创建一个新的事务。

嵌套事务使用数据库中的保存点来实现,即嵌套事务回滚不影响外部事务,但外部事务回滚将导致嵌套事务回滚。

Spring事务的回滚规则

  1. Spring事务默认只对运行时异常[非检查型]起作用(也就是出现运行时异常时,回滚数据);

  2. Spring事务默认对非运行时异常[检查型异常、编译期异常]不起作用;

  3. 可以使用rollbackFor指定Spring事务对哪些异常起作用;

  4. 可以使用noRollbackFor指定Spring事务对哪些异常不起作用;

  5. timeout 超时时间

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值