后面事务依赖前一个事务,如何在一个事务中部分事务先提交

后面事务依赖前一个事务,如何在一个事务中部分事务先提交

项目中经常存在一个事物中先提交后面事务再操作,如何保证前一个事务提交成功?

 @Override
    @Transactional(propagation = Propagation.NOT_SUPPORTED,rollbackFor = Exception.class)
    public Object DOtrance() {
        int update = 0;
        TranUser tranUser = transactionService.queryByName("憨憨2");
        System.out.println(tranUser);

        //事务1
        if (tranUser != null) {
            System.out.println(tranUser.getAge());
            update = transactionService.update(tranUser.getAge() - 1);
            if (update ==1 ) System.out.println("减一成功!");
        }

        TranUser user = transactionService.queryByName("憨憨2");
        System.out.println(user);

        //事务2
        if (user != null) {
            System.out.println(user.getAge());
            int j = transactionService.update(user.getAge() + 1);
            if (j ==1 ) System.out.println("加一成功!");
        }
        return update;
    }
@Override
    @Transactional(propagation = Propagation.REQUIRES_NEW,rollbackFor = Exception.class)
    public int update(int age) {
        
        return tranUserDao.update(age);
        
    }

该事务包含内部所有的事务,要么成功,要么失败,—若想事务1先提交 则后面事务与事务1不能再同一事务中执行!
result:

Consul:
TranUser(uname=憨憨2, sex=男, age=4)
4
减一成功!
TranUser(uname=憨憨2, sex=男, age=3)
3
加一成功!

在不通过缓存实现时,单线程操作只能将事务分离来保证后面事务的数据一致性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值