事务管理
-
介绍&操作
-
事务是一组操作的集合 ,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
-
事务控制主要三步操作:开启事务 、提交 事务/回滚事务
-
start transaction; / begin;
-
commit;(全部成功)
-
rollback;(只要有一项失败)
-
-
应用场景:
-
银行转账
-
下单扣减库存
-
-
-
Spring事务管理
-
@Transactional //事务管理 - 默认出现运行时异常,才会回滚,即RuntimeException
-
将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常,回滚事务
-
位置:业务(service)层的方法(推荐在会对数据库操作多次的方法)上、类上、接口上
-
-
事务进阶-rollbackFor
- 用于控制出现何种异常类型,回滚事务
-
事务进阶-propagation
-
事务传播行为:
- 指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制
-
Required:大部分场景
-
Requires_New:希望两个方法在独立的事务中运行,互不影响
-
-
四大特性(ACID)
-
原子性(Atomicity)
- 不可分割的最小单元,要么全部成功,要么全部失败
-
一致性(Consistency)
- 事务完成时,必须使所有的数据都保持一致状态
-
持久性(Isolation)
- 数据库系统提供的隔离机制,保证事务在不受 外部并发操作影响的独立环境下运行
-
隔离性(Durability)
- 事务一旦提交或回滚,它对数据库中数据的改变就是永久的
-