美文网首页
7.20_28期Spring事务角色

7.20_28期Spring事务角色

作者: 萧修 | 来源:发表于2023-07-28 01:00 被阅读0次

    事务管理员

    事务协调员

    本文以下面代码举例

    @Service
    public class AccountServiceimpl implements AccountService {
        @Autowired
        private AccountDao accountDao;
        public void transfer(String out, String in, Double money) {
            accountDao.outMoney(out,money);
            accountDao.inMoney(in,money);
        }
    }
    
    public interface AccountDao {
        @Update("update account set money = money + #{money} where name = #{name}")
        public void inMoney(@Param("name") String name,@Param("money") Double money);
    
        @Update("update account set money = money - #{money} where name = #{name}")
        public void outMoney(@Param("name")String name,@Param("money") Double money);
    }
    
    

    transfer被调用的时候,接口AccountDao会执行update语句,对数据库进行修改操作,会开启事务

    inMoney开启事务1、outMoney开启事务2,这两个事务不同,当某个事务出现出现失败,不会影响其他事务,事务1成功,出现异常,但是不影响事务2的执行,不会出现回滚

    使用spring事务之后,会将上述两种事务加入到spring事务,这样出现业务异常时,就可以进行数据回滚

    事务管理员:发起事务方,在Spring中通常指代业务层开启事务的方法
    事务协调员:加入事务方,在Spring中通常指数据层方法,也可以是业务层方法

    里面通过相同dataSource进行事务管理

    @Bean
        public PlatformTransactionManager transactionManager (DataSource dataSource){
            DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
            dataSourceTransactionManager.setDataSource(dataSource);
            return dataSourceTransactionManager;
        }
    

    相关文章

      网友评论

          本文标题:7.20_28期Spring事务角色

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