美文网首页spring boot
Spring事务传播性和隔离机制

Spring事务传播性和隔离机制

作者: zhglance | 来源:发表于2019-04-22 15:53 被阅读78次

1.Spring事务传播性

在事务出现嵌套的时候,嵌套的事务是各自独立commit,还是内层的事务合并到外层的事务一起commit。
Spring事务传播的类型(TransactionDefinition.java)

1.1 PROPAGATION_REQUIRED

默认事务传播机制,如果外层有事务,则合并到外部事务,否则开启新的事务。

1.2 PROPAGATION_REQUIRES_NEW

每次开启新的事务,同时挂起外层事务,当内层事务执行完成后,再恢复挂起的外层事务。

1.3 PROPAGATION_SUPPORTS

如果外层有事务,则内层事务合并到外层事务,如果不存在外层事务,则不创建事务,直接以非事务方式执行。

1.4 PROPAGATION_NOT_SUPPORTED

不支持事务,如果外层有事务,则挂起外层事务,执行当前方法,执行完毕后,恢复外层事务。

1.5 PROPAGATION_NEVER

不支持事务,如果外层有事务,直接抛出异常。

1.6 PROPAGATION_MANDATORY

该类型的方法只能在已经存在事务的方法中被调用,如果在不存在事务的方法中被调用,则直接抛出异常。

1.7 PROPAGATION_NESTED

如果有一个活动的事务存在,则运行在一个嵌套的事务中;如果没有活动事务, 则按PROPAGATION_REQUIRED 属性执行,即开启新的事务。

2.Spring事务隔离机制

1.RU(ISOLATION_READ_UNCOMMITTED) 读未提交

该级别会导致读脏数据的问题。

2.RC(ISOLATION_READ_COMMITTED) 不可重复读

一个事务内,可以读取到其他事务已经commit的数据,会导致一个事务内,多次查询结果不一样。

3.RR(ISOLATION_REPEATABLE_READ) 可重复读

一个事务内,多次查询得到的数据结果和第一次查询到的结果是一样的,不管其他事务是否修改了这些数据。

4.ISOLATION_SERIALIZABLE 串行化

事务采取串行化执行,不存在并发情况。

5. ISOLATION_DEFAULT 默认隔离级别

即使用数据库的默认隔离级别。
Mysql 默认:可重复读;
Oracle 默认:读已提交;
PostgreSQL默认:读已提交;
SQL Server默认:读已提交;
DB2默认:读已提交。

相关文章

网友评论

    本文标题:Spring事务传播性和隔离机制

    本文链接:https://www.haomeiwen.com/subject/tlnygqtx.html