Spring 之注解事务 @Transactional propagation属性详解

原创 2016年06月01日 18:48:59
Spring事务控制,至关重要,一个service会产生一个事务,自己也可以多方试验与尝试,积累实战经验。
@Transactional
 

spring 事务注解

默认遇到throw new RuntimeException("...");会回滚
需要捕获的throw new Exception("...");不会回滚

// 指定回滚
@Transactional(rollbackFor=Exception.class) 
    public void methodName() {
       // 不会回滚
       throw new Exception("...");
    } 
//指定不回滚
@Transactional(noRollbackFor=Exception.class)
    public ItimDaoImpl getItemDaoImpl() {
        // 会回滚
        throw new RuntimeException("注释");
    } 

    // 如果有事务,那么加入事务,没有的话新建一个(不写的情况下)
    @Transactional(propagation=Propagation.REQUIRED) 


     // 不管是否存在事务,都创建一个新的事务,原来的挂起,新的执行完毕,继续执行老的事务
    @Transactional(propagation=Propagation.REQUIRES_NEW) 

--------------------------------------------------------------------------------------------------
     // 必须在一个已有的事务中执行,否则抛出异常
    @Transactional(propagation=Propagation.MANDATORY)


     // 必须在一个没有的事务中执行,否则抛出异常(与Propagation.MANDATORY相反)
    @Transactional(propagation=Propagation.NEVER) 

--------------------------------------------------------------------------------------------------
     // 如果其他bean调用这个方法,在其他bean中声明事务,那就用事务.如果其他bean没有声明事务,那就不用事务.
    @Transactional(propagation=Propagation.SUPPORTS) 

  // 容器不为这个方法开启事务
    @Transactional(propagation=Propagation.NOT_SUPPORTED)
  --------------------------------------------------------------------------------------------------
    /*
    public void methodName(){
       // 本类的修改方法 1
       update();
       // 调用其他类的修改方法
       otherBean.update();
       // 本类的修改方法 2
       update();
    }
    other失败了不会影响 本类的修改提交成功
    本类update的失败,other也失败
    */
@Transactional(propagation=Propagation.NESTED) 
// readOnly=true只读,不能更新,删除 


 @Transactional (propagation = Propagation.REQUIRED,readOnly=true) 
// 设置超时时间


@Transactional (propagation = Propagation.REQUIRED,timeout=30)
// 设置数据库隔离级别


@Transactional (propagation = Propagation.REQUIRED,isolation=Isolation.DEFAULT)

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Spring Transaction属性之Propagation

我们平常使用spring transaction时,我们大多都习惯于使用@Transactional,对于这个annotation可以有些什么配置,在什么情况下使用了解比较少。这篇博客主要关注于@Tr...

Spring: @Transactional中的propagation属性

在Spring的事务管理中,我们可以使用@Transactional这一annotation来对事务进行声明式的设定。具体而言,就是在类或者方法前添加@Transactional并传入属性参数以获取所...
  • JIESA
  • JIESA
  • 2015-11-02 17:20
  • 5542

@Transactional(propagation=Propagation.REQUIRED) 事务传播行为种类(注解方式)

事务传播行为种类 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 表1事务传播行为...
  • zygzzp
  • zygzzp
  • 2013-06-03 12:21
  • 3197

spring @Transactional注解参数详解

事务注解方式 @Transactional 当标于类前时, 标示类中所有方法都进行事务处理 : @Transactional (propagation = Propagation.REQUIRED,...

spring中@Transactional对于事务异常的处理

spring对于事务异常的处理 //unchecked   运行期Exception   spring默认会进行事务回滚     比如:RuntimeException //checked...

Spring事务管理中propagation="REQUIRED"

本文重点讲一讲propagation参数,propagation配置的就是一个事务的传播性问题。  所谓事务传播性,就是被调用者的事务与调用者的事务之间的关系。举例说明。 ...

Spring 注解@Transactional readOnly=true

引子  今天下班后,以前同事小胖问我Spring  Service类中的注解@Transactional readOnly=true的作用。做为他眼中的高人,我自然要装下A-C。居然想都没有想就...

spring事务定义中,@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED) 这样定义有问题吗?

spring事务定义中,@Transactional(readOnly = true, propagation = Propagation.NOT_SUPPORTED) 这样定义有问题吗? ...

Spring中事务的Propagation(传播性)的取值

PROPAGATION_REQUIRED        -- 加入当前已有事务;只有当前没有事务才起一个新的事务        比如说,ServiceB.methodB的事务级别定义为PROPAG...

Spring事务管理中@Transactional的propagation参数

本文重点讲述Transactional中propagation参数,propagation配置的就是一个事务的传播性问题。  所谓事务传播性,就是被调用者的事务与调用者的事务之间的关系。举例说明。//...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)