spring 事务:
一: 理论:
事务(ACID):
A:原子性-都成功,都失败;
C:一致性(A转账给B,A扣了一百,B的钱一定增加);
I:隔离性(事务之间互不干扰);
D:持久性(修改是永久的)
1. 传播行为: 一个事务掉另一个事务,多个事务操作时怎么处理
1.1 PROPAGATION_REQUIRED(默认): 当前事务存在,使用当前事务;当前不存在, 新建一个事务
1.2 PROPAGATION_SUPPORTS: 当前事务存在,使用当前事务;当前不存在, 则不建立事务, 用非事务方式执行
1.3 PROPAGATION_MANDATORY: 当前事务存在,使用当前事务;当前不存在,抛异常
1.4 PROPAGATION_REQUIRES_NEW: 当前事务存在则挂起, 新建一个事务, 两个事务独立运行,可通过捕获新建事务执行异常判断当前事务是否需要回滚操作
1.5 PROPAGATION_NOT_SUPPORTED: 当前事务存在则挂起,用非事务方式执行
1.6 PROPAGATION_NEVER: 当前事务存在则抛异常,用非事务方式执行
1.7 PROPAGATION_NESTED: 当前事务存在则嵌套事务, 不存在则新建一个事务
@Transactional(propagation=Propagation.PROPAGATION_REQUIRED)
2. 隔离级别:
并发情况会出现:
脏读: 读取未提交数据
不可重复读: 读取过程中有数据更新
幻读: 修改过程中, 有数据更新
2.1 ISOLATION_DEFAULT 默认级别
2.2 ISOLATION_READ_UNCOMMITTED: 读未提交的数据
2.3 IS