事务传播行为

事务传播行为解决了业务层方法互相调用时的事务问题。例如,在A类调用B类方法时,如何配置事务传播以确保异常发生时能正确回滚。常见的事务传播行为包括:PROPAGATION_REQUIRED(默认,共享事务)、PROPAGATION_REQUIRES_NEW(新建独立事务)和PROPAGATION_NESTED(嵌套事务)。PROPAGATION_REQUIRED若外部无事务则新建,有事务则加入;PROPAGATION_REQUIRES_NEW始终新建事务;PROPAGATION_NESTED则在有事务时创建子事务,子事务可独立回滚或跟随主事务回滚。
摘要由CSDN通过智能技术生成

事务传播行为是为了解决业务层方法之间互相调用的事务问题。

当事务方法被另外一个事务方法调用时,必须制定事务应该如何传播。例如:方法可能继续在现有事务中运行,也可能开启一个新事物,并在自己的事务中运行。

举个例子!

我们在A类的aMethod()方法中调用了B类的bMethod()方法。这个时候就涉及到业务层方法之间互相调用的事务问题。如果我们的bMethod()如果发生异常需要回滚,如何配置事务传播行为才能让aMethod()也跟着回滚呢?这个时候就需要事务传播行为的知识了。

Class A {
    @Transactional(propagation=propagation.xxx)
    public void aMethod {
        //do something
        B b = new B();
        b.bMethod();
    }
}

Class B {
    @Transactional(propagation=propagation.xxx)
    public void bMethod {
        //do something
    }
}

 在TransactionDefinition定义中包括了如下几个表示传播行为的常量:

public interface TransactionDefinition {
    int PROPAGATION_REQUIRED = 0;
    int PROPAGATION_SUPPORTS = 1;
    int PROPAGATION_MANDATORY = 2;
    int PROPAGATION_REQUIRES_NEW = 3;
    int PROPAGATION_NOT_SUPPORTED = 4;
    int PROPAGATION_NEVER = 5;
    int PROPAGATION_NESTED = 6;
    ......
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值