zoukankan      html  css  js  c++  java
  • springboot学习总结(十三)jpa事务

    (一)java异常

      Throwable这个Java类被用来表示任何可以作为异常被抛出来的类。Throwable对象可分为两种类型(指从Throwable继承而得到的类型):Error用来表示编译时和系统错误(除特殊情况外,一般不用关心);Exception是可以被抛出的基本类型。所以Java程序员关心的基类型通常是Exception。

      Exception中有一个特例:RuntimeException。属于RuntimeException的类型很多,他们会自动被Java虚拟机抛出,所以不必在异常说明中把它们列出来(例:NullPointerException),因为RuntimeException异常不需要在异常说明中申明方法将抛出RuntimeException类型的异常,他们也被称为“unchecked exceptions”,看下面的demo就看懂了

        /**
         * RuntimeException不需要在方法上申明
         */
        public void uncheckedException(){
            throw new RuntimeException();
        }
    
        /**
         * 非RuntimeException需要在方法上申明或者在方法体上用try..catch包起来
         * @throws Exception
         */
        public void checkedExceptions() throws Exception {
            throw new Exception();
        }
    

     图片找的网上的(地址:https://www.pianshen.com/article/93521095041/

    (二)springboot的事务

    1、什么都不加

    看下面的代码

        @Override
        @Transactional
        public void saveAuthorNotRollRack(Author author) throws Exception {
            //不会回滚
            authorDao.save(author);
            throw new Exception("author error");
        }
    
    
        @Override
        @Transactional
        public void saveAuthorRuntimeRollRack(Author author){
            //会回滚
            authorDao.save(author);
            throw new NullPointerException();
        }
    

    如果@Transactional没有加回滚的条件(rollbackFor),那么只有抛出RuntimeException或者Error时才会回滚,其他异常不会回滚。

    2、指定异常回滚

    3、指定异常不回滚

  • 相关阅读:
    Vue+ElementUI 安装与应用
    python 之serial、pyusb 使用开发
    ASP.NET Swagger 创建与汉化生成 API说明文档
    DataGridView绑定数据源后动态删除行
    MySql动态拼接SQL并动态赋值
    MySql存储过程
    DEV控件之TreeList使用
    DataGridView单元格格式化
    ajax通过PUT方式调用WEBAPI
    解决跨域session 同步问题
  • 原文地址:https://www.cnblogs.com/vincentren/p/13296585.html
Copyright © 2011-2022 走看看