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的作用。

  • 相关阅读:
    Spring--之旅
    体验 Windows 系统 CVM
    基于 CentOS 搭建 WordPress 个人博客
    Codeforces Round #316 (Div. 2)
    BZOJ 1048 [HAOI2007]分割矩阵
    BZOJ 1047 [HAOI2007]理想的正方形
    BZOJ 1045 [HAOI2008] 糖果传递
    BZOJ 1042 [HAOI2008]硬币购物
    BZOJ 1030 [JSOI2007]文本生成器
    BZOJ 第二波刷题开始喽
  • 原文地址:https://www.cnblogs.com/dongyaotou/p/13294549.html
Copyright © 2011-2022 走看看