Spring事务管理
概念:事务 是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作 要么同时成功,要么同时失败
注意:
默认MySQL的事务是自动提交的,也就是说,当执行一条DML语句,MySQL会立即隐式的提交事务
操作
事务控制主要三步操作:开启事务、提交事务/回滚事务
如何控制事务 ?
开启事务:start transaction/begin;
提交事务:commit;(全部成功)
回滚事务:rollback;(只要有一项失败)
Spring事务管理-控制事务
注解:@Transactional
作用:将当前方法交给spring进行事务管理,方法执行前,开启事务;成功执行完毕,提交事务;出现异常
位置:业务(service)层的方法上、类上、接口上
事务进阶-rollbackFor
事务管理 -默认出现运行时异常RuntimeException才会回滚
如上代码任何异常都会进行事务回滚
事务进阶-propagation
事务传播行为:指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行事务控制
属性值 | 含义 |
REQUIRED | 【默认值】需要事务,有则加入,无则创建新事务 |
REQUIRES NEW | 需要新事务,无论有无,总是创建新事务 |
SUPPORTS | 支持事务,有则加入,无则在无事务状态中运行 |
NOT SUPPORTED | 不支持事务,在无事务状态下运行,如果当前存在已有事务,则挂起当前事务 |
MANDATORY | 必须有事务,否则抛异常 |
NEVER | 必须没事务,否则抛异常 |
四大特性(ACID)
原子性Atomicity
事务是不可分割的最小单元,要么全部成功,要么全部失败
一致性Consistency
保事务完成时,必须使所有的数据都保持一致状态
隔离性Isolation
数据库系统提供的隔离机制,保证事务在不受外部并发操作影响的独立环境下运行
持久性Durability
事务一旦提交或回滚,它对数据库中的数据的改变就是永久的