spring事务详解

Posted timeboy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring事务详解相关的知识,希望对你有一定的参考价值。

1.spring事务原理:spring事务的本质其实就是数据库对事务的支持,没有数据库对事务的支持就无法提供事务的功能。

2.spring事务传播属性:

PROPAGATION_REQUIRED     支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择,也是 Spring 默认的事务的传播。
PROPAGATION_REQUIRES_NEW     新建事务,如果当前存在事务,把当前事务挂起。新建的事务将和被挂起的事务没有任何关系,是两个独立的事务,外层事务失败回滚之后,不能回滚内层事务执行的结果,内层事务失败抛出异常,外层事务捕获,也可以不处理回滚操作
PROPAGATION_SUPPORTS     支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY     支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_NOT_SUPPORTED     以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER     以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED   如果一个活动的事务存在,则运行在一个嵌套的事务中。如果没有活动事务,则按REQUIRED属性执行。它使用了一个单独的事务,这个事务拥有多个可以回滚的保存点。内部事务的回滚不会对外部事务造成影响。它只对DataSourceTransactionManager事务管理器起效。

3.spring事务隔离级别:

ISOLATION_DEFAULT     这是个 PlatfromTransactionManager 默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与 JDBC 的隔离级别相对应。
ISOLATION_READ_UNCOMMITTED     这是事务最低的隔离级别,它充许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。
ISOLATION_READ_COMMITTED     保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。
ISOLATION_REPEATABLE_READ     这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。
ISOLATION_SERIALIZABLE     这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。











以上是关于spring事务详解的主要内容,如果未能解决你的问题,请参考以下文章

spring事务详解

Spring中的事务传播属性详解

Spring事务管理(详解+实例)

18个示例详解 Spring 事务传播机制

Spring 事务机制详解

Spring事务详解