侧边栏壁纸
博主头像
会飞的大象博主等级

爱运动的程序猿

  • 累计撰写 126 篇文章
  • 累计创建 158 个标签
  • 累计收到 0 条评论
标签搜索

目 录CONTENT

文章目录

java事务针对异常处理

会飞的大象
2021-08-05 / 0 评论 / 0 点赞 / 783 阅读 / 0 字

需求:需要捕获到@Transactional中的异常,并不影响事物回滚

@Transactional(rollbackFor = Exception.class)
public void test() { 
     try { 
        updata(); 
        updata2(); 
     }catch (Exception e) { 
          e.printStackTrace();    
          TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();//如果updata2()抛了异常,updata()会回滚,不影响事物正常执行                                                                             
     } 

注释:Exception分为运行时异常RuntimeException和非运行时异常

使用(rollbackFor=Exception.class)与不使用的区别

1.在项目中,@Transactional(rollbackFor=Exception.class),如果类加了这个注解,那么这个类里面的方法抛出异常,就会回滚,数据库里面的数据也会回滚。
2.在@Transactional注解中如果不配置rollbackFor属性,那么事物只会在遇到RuntimeException的时候才会回滚,加上rollbackFor=Exception.class,可以让事物在遇到非运行时异常时也回滚

0

评论区