Spring事务和传播机制

Spring事务和传播机制

1.事务的特性(ACID原则)

  • 原子性(Atomicity):事务是一个原子操作,由一系列动作组成。事务的原子性确保动作要么全部完成,要么完全不起作用。
  • 一致性(Consistency):一旦事务完成(不管成功还是失败),系统必须确保它所建模的业务处于一致的状态,而不会是部分完成部分失败。在现实中的数据不应该被破坏。
  • 隔离性(Isolation):可能有许多事务会同时处理相同的数据,因此每个事务都应该与其他事务隔离开来,防止数据损坏。
  • 持久性(Durability):一旦事务完成,无论发生什么系统错误,它的结果都不应该受到影响,这样就能从任何系统崩溃中恢复过来。通常情况下,事务的结果被写到持久化存储器中。

2.事务的传播机制 propagation

Spring事务和传播机制

3.事务的隔离级别 isolation

隔离级别 脏读 不可重复读 幻读
读未提交(Read uncommitted)
读已提交(Read committed) ×
可重复读(Repeatable read) × ×
串行化(Serializable) × × ×

spring中一般不配置isolation此属性,采取数据库自己默认的隔离级别 mysql默认的隔离级别

4. timeout

指如果事务超过时间就会自动回滚

5. readOnly

(默认是false)指定当前事务中的操作是否 为 只读 如果是只读 不建议在只读中做 增删改的操作

mysql中有锁的概念 如果设置为 只读readOnly=true 不加锁