事务 @Transactional 的 Propagation.REQUIRES_NEW

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/53482960 小经验: 同一个业务类里面 , 即使声明为 Propagation.REQUIRES_NEW也不会新启一个事务。
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/catoop/article/details/53482960

小经验:
同一个业务类里面 , 即使声明为 Propagation.REQUIRES_NEW也不会新启一个事务。必须调用另一个类的Propagation.REQUIRES_NEW方法才行。

如下代码:

@Service
public class A {

    @Autowired
    private OrderApplyMapper orderApplyMapper;

    @Transactional(propagation = Propagation.REQUIRES_NEW, readOnly = false, rollbackFor = Exception.class)
    public int testB(OrderApply order) {
        return orderApplyMapper.save(order);
    }

    @Transactional
    public void testA(OrderApply order) {
        System.out.println("1111111111111");
        testB(order);
        System.out.println("2222222222222");
        throw new RuntimeException();
    }

}

这2个方法在同一个类中,本身预期结果是testB方法执行成功,testA方法回滚。实际结果是testB也会被回滚。

如果想使 Propagation.REQUIRES_NEW 生效,则需要把testB这个方法单独放到别的类中,然后调用过来。

具体为什么会这样,没有深究,写下来记录一下。

目录
相关文章
|
6月前
|
机器学习/深度学习 算法 Python
Backpropagation
【6月更文挑战第24天】
53 7
|
6月前
|
监控 Java API
Java一分钟之-JPA事务管理:PROPAGATION_REQUIRED, PROPAGATION_REQUIRES_NEW等
【6月更文挑战第14天】Java企业开发中,事务管理确保数据一致性,Spring事务管理核心概念包括`PROPAGATION_REQUIRED`和`PROPAGATION_REQUIRES_NEW`。前者在无事务时新建,有事务时加入,常用于保证业务方法在事务中执行。后者始终创建新事务,独立于当前事务,适用于需隔离影响的场景。理解其应用场景和易错点,合理配置事务传播行为,能提升应用的健壮性和性能。通过监控和日志优化事务策略是关键。
126 1
|
6月前
|
机器学习/深度学习 存储 PyTorch
四、反向传播 back propagation
四、反向传播 back propagation
|
7月前
|
关系型数据库 Java MySQL
一篇文章学会使用@Transactional
一篇文章学会使用@Transactional
75 0
|
SQL Java 数据库连接
@Transactional
@Transactional
108 0
|
SQL Oracle 关系型数据库
事务模型(Transaction Model)
事务模型(Transaction Model)是一种用于管理数据库操作的方法,它确保数据库操作的原子性、一致性、隔离性和持久性,通常简称为ACID属性。
556 1
|
机器学习/深度学习 算法 PyTorch
Back Propagation 反向传播
Back Propagation 反向传播
110 0
|
存储 JSON 数据挖掘
PlistEdit Pro
PlistEdit Pro 是一款为 macOS 设计的属性列表(Plist)编辑器,它可以帮助用户直观且方便地查看、编辑和管理 Plist 文件。Plist 文件是 macOS 和 iOS 操作系统中许多应用程序和系统功能使用的配置文件格式,通常包含键值对、数组和字典等数据结构。
295 0
|
Java 数据库 Spring
Transactional事务传播行为?
Transactional事务传播行为?
Transactional事务传播行为?
|
Java Spring
Springboot 跟着我了解下 事务 @Transactional 默认方式 Propagation.REQUIRED
Springboot 跟着我了解下 事务 @Transactional 默认方式 Propagation.REQUIRED
504 0
Springboot 跟着我了解下 事务 @Transactional 默认方式 Propagation.REQUIRED