• 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 {};
    }
  • 相关阅读:
    新学期随笔——脚踏实地
    买书方案
    课程总结和建议
    梦断代码阅读笔记03
    梦断代码阅读笔记02
    构建之法阅读笔记06
    【洛谷5284】[十二省联考2019] 字符串问题(后缀树优化建边)
    【BZOJ3514】Codechef MARCH14 GERALD07加强版(LCT_主席树)
    【BZOJ1487】[HNOI2009]无归岛(仙人掌 DP)
    【洛谷3239_BZOJ4008】[HNOI2015] 亚瑟王(期望 DP)
  • 原文地址:https://www.cnblogs.com/yangji0202/p/14262370.html
Copyright © 2020-2023  润新知