美文网首页
事务的传播机制和回滚策略(暂时没有整理完)

事务的传播机制和回滚策略(暂时没有整理完)

作者: 熊熊要更努力 | 来源:发表于2017-08-15 01:06 被阅读72次

事务的嵌套概念

所谓事务的嵌套就是两个事务方法之间相互调用。spring事务开启 ,或者是基于接口的或者是基于类的代理被创建(注意一定要是代理,不能手动new 一个对象,并且此类(有无接口都行)一定要被代理——spring中的bean只要纳入了IOC管理都是被代理的)。所以在同一个类中一个方法调用另一个方法有事务的方法,事务是不会起作用的

spring 事务异常处理

Spring默认情况下会对运行期例外(RunTimeException),即uncheck异常,进行事务回滚。如果遇到checked异常就不回滚。改变默认规则的方法如下 :

  1. 让checked例外也回滚:在整个方法前加上 @Transactional(rollbackFor=Exception.class)
  2. 让unchecked例外不回滚: @Transactional(notRollbackFor=RunTimeException.class)
  3. 不需要事务管理的(只查询的)方法:@Transactional(propagation=Propagation.NOT_SUPPORTED)

spring事务传播属性

在 spring的 TransactionDefinition接口中一共定义了六种事务传播属性:

  1. PROPAGATION_REQUIRED -- 支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。

  2. PROPAGATION_SUPPORTS -- 支持当前事务,如果当前没有事务,就以非事务方式执行。

  3. PROPAGATION_MANDATORY -- 支持当前事务,如果当前没有事务,就抛出异常。

  4. PROPAGATION_REQUIRES_NEW -- 新建事务,如果当前存在事务,把当前事务挂起。

  5. PROPAGATION_NOT_SUPPORTED -- 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

  6. PROPAGATION_NEVER -- 以非事务方式执行,如果当前存在事务,则抛出异常。

  7. PROPAGATION_NESTED -- 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。

前六个策略类似于EJB CMT,第七个(PROPAGATION_NESTED)是Spring所提供的一个特殊变量。

它要求事务管理器或者使用JDBC 3.0 Savepoint API提供嵌套事务行为(如Spring的DataSourceTransactionManager)

相关文章

  • 事务的传播机制和回滚策略(暂时没有整理完)

    事务的嵌套概念 所谓事务的嵌套就是两个事务方法之间相互调用。spring事务开启 ,或者是基于接口的或者是基于类的...

  • 有关Spring事务,看这一篇就足够了

    本文将按照声明式事务的五个特性进行介绍: 事务传播机制 事务隔离机制 只读 事务超时 回滚规则 Spring事务传...

  • Spring事务

    1.事务的传播机制 2.事务隔离机制 3.只读 4.事务超时 5.回滚规则 1.事务的特性: 原子性:事务是一个原...

  • pringMVC事务回滚

    事务回滚机制 默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。 如果不写rool...

  • Redis学习笔记-2

    Redis是事务机制 Redis不支持事务的回滚机制,当事务发生错误,整个事务会继续执行下去,直到整个事务队列中所...

  • try catch对Spring事务的影响

    一、Spring 的默认事务机制,当出现unchecked异常时候回滚,checked异常的时候不会回滚。 异常中...

  • spring事务

    spring的默认事务机制,当出现unchecked异常时候回滚,checked异常的时候不会回滚; 异常中unc...

  • 事务的隔离、传播、回滚

    springboot之事务的隔离与传播 事务的隔离 多个事务是并发的访问数据库,并发是必须的但会带来几个问题: 脏...

  • try catch影响Spring事务吗?

    一、Spring 的默认事务机制,当出现unchecked异常时候回滚,checked异常的时候不会回滚。异常中u...

  • (三)Spring事务的属性和使用入口

    1、事务属性 传播行为隔离级别事务超时只读事务回滚规则 2、使用入口@Transactional(1)可以标注在类...

网友评论

      本文标题:事务的传播机制和回滚策略(暂时没有整理完)

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