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 {};
    }
  • 相关阅读:
    ioncube 加密软件 linux 使用方法
    PHP使用FPDF pdf添加水印中文乱码问题 pdf合并版本问题
    redis windows dll 下载
    浅析PHP7新功能及语法变化总结
    PHP二维数组去重
    extract 用法说明
    python基础之循环
    linux防火墙(五)—— 防火墙的规则备份与还原
    Haproxy搭建Web群集
    网站五层架构
  • 原文地址:https://www.cnblogs.com/yangji0202/p/14262370.html
Copyright © 2011-2022 走看看