作者:月下山川
公众号:月下山川
1、什么是事务
数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。
2、事务的特性
A:原子性(Atomicity)
C:一致性(Consistency)
I:隔离性(Isolation)
D:持久性(Durability)
3、事务的分类
编程式事务、声明式事务
- 编程式:自己写代码实现功能
- 声明式:通过配置让框架实现功能
4、事务的属性
4.1 只读
@Transactional(readOnly = true)
4.2 超时
@Transactional(timeout = 3)
4.3 回滚策略
- rollbackFor属性:需要设置一个Class类型的对象
- rollbackForClassName属性:需要设置一个字符串类型的全类名
- noRollbackFor属性:需要设置一个Class类型的对象
- rollbackFor属性:需要设置一个字符串类型的全类名
4.4 隔离级别
- 读未提交:READ UNCOMMITTED
- 读已提交:READ COMMITTED、
- 可重复读:REPEATABLE READ
- 串行化:SERIALIZABLE
4.5 传播行为
Spring 定义了七种事务传播行为:
- REQUIRED:如果当前存在事务,则加入该事务;如果不存在,则创建一个新事务。
- SUPPORTS:如果当前存在事务,则支持当前事务;如果不存在,则非事务方式执行。
- MANDATORY:如果当前存在事务,则加入该事务;如果不存在,则抛出异常。
- REQUIRES_NEW:创建一个新事务,如果当前存在事务,则挂起该事务。
- NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则挂起该事务。
- NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
- NESTED:如果当前存在事务,则创建一个嵌套事务;如果不存在,则行为与 REQUIRED 相同。
作者:月下山川
公众号:月下山川