zoukankan      html  css  js  c++  java
  • springboot事务注解@Transactional

    有时候需要在程序中执行一系列数据库dml操作,但是我们又希望该一系列dml操作要么全部成功,要么遇到异常回滚。这里就可以使用@Transactional注解;

    Transactional注解可以在类和方法上使用,当执行数据库dml语句时,遇到失败回滚事务。

    笔记已经上传到有道云笔记,有需要可以直接下载,下载地址:  

    http://note.youdao.com/noteshare?id=3a4432decb6dddc1172b91d49bc1f0e4&sub=CD3535E7CA734EDD8435D1620C63573E

    @Target({ElementType.METHOD, ElementType.TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Inherited
    @Documented
    public @interface Transactional {
        /*
         * 指定使用那个事务管理器
         */
        @AliasFor("transactionManager")
        String value() default "";
    
        @AliasFor("value")
        String transactionManager() default "";
    
        /*
         * 传播行为
         * TransactionDefinition.PROPAGATION_MANDATORY
         * 支持当前事务;如果不存在当前事务,则抛出一个异常。
         * <p>
         * TransactionDefinition.PROPAGATION_NESTED
         * 如果存在当前事务,则在一个嵌套的事务中执行。        
         * <p>
         * TransactionDefinition.PROPAGATION_NEVER
         * 不支持当前事务;如果存在当前事务,则抛出一个异常。
         * <p>
         * TransactionDefinition.PROPAGATION_NOT_SUPPORTED
         * 不支持当前事务;而总是执行非事务性。
         * <p>
         * TransactionDefinition.PROPAGATION_REQUIRED
         * 支持当前事务;如果不存在事务,则创建一个新的事务。
         * <p>
         * TransactionDefinition.PROPAGATION_REQUIRES_NEW
         * 创建一个新事务,如果存在一个事务,则把当前事务挂起。
         * <p>
         * TransactionDefinition.PROPAGATION_SUPPORTS
         * 支持当前事务;如果不存在,则执行非事务性。
         * <p>
         * TransactionDefinition.TIMEOUT_DEFAULT
         * 使用默认超时的底层事务系统,或者如果不支持超时则没有
         */
        Propagation propagation() default Propagation.REQUIRED;
    
        /*
         * 隔离级别
         * TransactionDefinition.ISOLATION_DEFAULT
         * 这是默认的隔离级别
         * <p>
         * TransactionDefinition.ISOLATION_READ_COMMITTED
         * 表明能够阻止误读;可以发生不可重复读和虚读
         * <p>
         * TransactionDefinition.ISOLATION_READ_UNCOMMITTED
         * 表明可以发生误读、不可重复读和虚读。
         * <p>
         * TransactionDefinition.ISOLATION_REPEATABLE_READ
         * 表明能够阻止误读和不可重复读;可以发生虚读。
         * TransactionDefinition.ISOLATION_SERIALIZABLE
         * 表明能够阻止误读、不可重复读和虚读。
         */
        Isolation isolation() default Isolation.DEFAULT;
    
        /*
         * 超时时间
         */
        int timeout() default -1;
    
        /*
         * 是否只读
         */
        boolean readOnly() default false;
    
        /*
         * 指定那些异常回滚事务
         */
        Class<? extends Throwable>[] rollbackFor() default {};
    
        String[] rollbackForClassName() default {};
    
       /*
        * 指定那些发生那些异常不需要回滚事务
        */
        Class<? extends Throwable>[] noRollbackFor() default {};
    
        String[] noRollbackForClassName() default {};
    }
  • 相关阅读:
    微信小程序:动画(Animation)
    小程序滚动事件之头部渐隐渐现demo
    小程序tab栏可滑动,可点击居中demo
    ES7中前端异步特性:async、await。
    vue中生成二维码
    vue之vue-cookies
    echarts中boundaryGap属性
    ES6数组方法总结
    手写自己的ORM框架For SQlServer(简单的CURD)
    Sqlsever新增作业执行计划傻瓜式操作
  • 原文地址:https://www.cnblogs.com/yangji0202/p/14262370.html
Copyright © 2011-2022 走看看