通俗理解事务其实僦是一系列指令的集合。
原子性:事务更改要么全部成功要么全部失败
一致性:事务提交后,所有数据都必须一致
隔离性:事务之间不能相互影响
持久性:一旦事务更新对数据库的改变都应该是永久的。
脏读:一个事务读到另一个事务未提交的更新数据
不可重复读:事務A读取到了事务B更改的数据
幻读:事务A读取到事务B新增的数据
spring事务的隔离级别 (针对数据库的实际就是锁表,锁行)
spring7种事务传播行为 (針对方法间的传播行为)
1.propagation_required --spring默认的事务传播行为如果没有,就新建一个如果有,就加入当前事务(适合绝大多数情况)
2.propagation_requires_new --如果没有就新建,如果有就将当前事务挂起。(新建一个事务和原来的事务没有关系)
3.propagation_nested --如果没有就新建,如果有就嵌入(当主事务提交或回滚,孓事务也提交或回滚)
4.propagation_supports --如果没有就没有,有就使用当前事务(无所谓有就用,没有就算了)
5.propagation_not_supported --如果没有就没有,如果有就将当前事務挂起(意思就是不支持事务)
事务超时:transcation timeout 为了解决事务时间太长,消耗资源太多 事务时间超过最大时长,就回滚
只读事务: readonly transcation 为了忽略那些不需要事务的方法比如读取数据,这样可以提高效率