zoukankan      html  css  js  c++  java
  • springBoot框架方法上面添加@Transactional注解的使用 springBoot框架类上面添加@Transactional注解的使用postgresql数据库

    @Transactional如果在一个方法上面添加@Transactional注解

    查看postgresql数据库当前的事务隔离级别:

     

    @Transactional

    public void updateData(){

      aService.updateA();//更新A表

      bService.updateB();//更新B表

      cService.updateC();//更新C表

    }

    假设,如果每一个service只会对应的更新他所对应的这张表,下面这三个方法上面加不加@Transactional效果都是一样的。不会对最终的结果产生影响。

    Pubic void updateA(){

        //只进行更新A表的操作

    }

    Pubic void updateB(){

        //只进行更新B表的操作

    }

    Pubic void updateC(){

        //只进行更新C表的操作

    }

    这种架构,的意思是将ABC三张表的更新操作绑定成一个原子,更新的时候,要成功都成功,要失败都失败。

    如果将上面的架构换成下面这种模式:

    public void updateData(){

    aService.updateA();//更新A表

    if(1==1){

    Throw new BussinessException(“模拟发生异常”);

    }

    bService.updateB();//更新B表

    cService.updateC();//更新C表

    }

    假设,如果每一个service只会对应的更新他所对应的这张表,下面这三个方法上面加不加@Transactional效果都是一样的。不会对最终的结果产生影响。

    Pubic void updateA(){

        //只进行更新A表的操作

    }

    Pubic void updateB(){

        //只进行更新B表的操作

    }

    Pubic void updateC(){

        //只进行更新C表的操作

    }

    我们会发现程序抛出了异常,但是A表成功的更新了数据。

     

    如果我们在类上面添加@Transactional 注解

    @Transactional

    public class Test{

      

    public void updateData(){

      aService.updateA();//更新A表

      bService.updateB();//更新B表

      cService.updateC();//更新C表

    }

      

    }

     

    Pubic void updateA(){

        //只进行更新A表的操作 假设A表中有两条三条数据要进行更新操作,

        //我在更新第二条数据的时候手动抛出一个异常

    }

     

    这个时候,我们进行测试,会发现,所有的数据都不会进行更新,这就是类级别的@Transactional的作用。

  • 相关阅读:
    poj3254 Corn Fields 利用状态压缩求方案数;
    UVA
    hdu 4272 LianLianKan 状态压缩
    项目棘手问题 没用
    70个HR面试题
    1、 Shiro框架:认证,授权(验权 2. Shiro框架实现权限控制方式:
    2菜单数据添加 4.1角色添加
    SQL 数据排重,去掉重复数据 有用
    几种我背过的设计模式 有用
    运单waybill快速录入
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/13294549.html
Copyright © 2011-2022 走看看