声明式事务
13.1 回顾事务
- 把一组业务当成一个业务来做,要么都成功,要么都失败
- 在项目开发中十分重要,涉及到数据的一致性问题
- 确保完整性和一致性
事务的ACID原则:
- 原子性
- 一致性
- 隔离性
- 多个业务可能操作同一个资源,防止数据损坏 - 持久性
- 事务一旦提交,无论系统发生什么问题,结果都不会再被影响,配持久化的写到存储器中
13.2 Spring中的事务管理
- 声明式事务:AOP
- 编程式事务:需要在代码中进行事务的管理
Spring中七种Propagation类的事务属性详解:
REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。 默认为这个
SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
MANDATORY:支持当前事务,如果当前没有事务,就抛出异常。
REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起。
NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
NESTED:支持当前事务,如果当前事务存在,则执行一个嵌套事务,如果当前没有事务,就新建一个事务。
为什么需要事务?
- 如果不配置事务,可能存在数据提交不一致的情况
- 如果不在spring中配置声明式事务,我们就需要在代码中手动配置
- 事务在项目开发中十分重要,涉及到数据的一致性和完整性问题