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 {};
    }
  • 相关阅读:
    New version of VS2005 extensions for SharePoint 3.0
    QuickPart : 用户控件包装器 for SharePoint Server 2007
    随想
    发布 SharePoint Server 2007 Starter Page
    如何在SharePoint Server中整合其他应用系统?
    Office SharePoint Server 2007 中文180天评估版到货!
    RMS 1.0 SP2
    SharePoint Server 2007 Web内容管理中的几个关键概念
    如何为已存在的SharePoint站点启用SSL
    Some update information about Office 2007
  • 原文地址:https://www.cnblogs.com/yangji0202/p/14262370.html
Copyright © 2011-2022 走看看