Spring事务和传播机制
Spring事务和传播机制
1.事务的特性(ACID原则)
- 原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。
- 一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。
- 隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
- 持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。
2.事务的传播机制 propagation
3.事务的隔离级别 isolation
隔离级别 | 脏读 | 不可重复读 | 幻读 |
---|---|---|---|
读未提交(Read uncommitted) | √ | √ | √ |
读已提交(Read committed) | × | √ | √ |
可重复读(Repeatable read) | × | × | √ |
串行化(Serializable) | × | × | × |
spring中一般不配置isolation此属性,采取数据库自己默认的隔离级别 mysql默认的隔离级别
4. timeout
指如果事务超过时间就会自动回滚
5. readOnly
(默认是false)指定当前事务中的操作是否 为 只读 如果是只读 不建议在只读中做 增删改的操作
mysql中有锁的概念 如果设置为 只读readOnly=true 不加锁