• Spring事物管理机制简单学习


        首先spring并不直接管理事物,而是提供了多种事物管理器,他们将事务管理的职责委托给Hibernate或者JTA等持久化机制所提供的相关平台框架的事务来实现。 Spring管理事物的接口是org.springframework.transaction.PlatformTransactionManager,通过这个接口Spring为各个平台提供了相应的事物管理器,所以Spring事务管理的一个优点就是为不同的事务API提供一致的编程模型,如JTA、JDBC、Hibernate、JPA。

        我这里主要用到spring的声明式事务管理:

      采用@Transactional配置的spring声明式事物管理详解:

      首先必须在spring的配置文件里面加上<tx:annotation-driven transaction-manager="transactionManager"/>,表明事物采用注解的方式注入,

      采用注解的方式时,对事物的基本配置主要有下列属性: 

    • transaction-manager:指定事务管理器名字,默认为transactionManager,当使用其他名字时需要明确指定;
    • proxy-target-class:表示将使用的代码机制,默认false表示使用JDK代理,如果为true将使用CGLIB代理
    • order:定义事务通知顺序,默认Ordered.LOWEST_PRECEDENCE,表示将顺序决定权交给AOP来处理。
    • value:指定事务管理器名字,默认使用<tx:annotation-driven/>指定的事务管理器,用于支持多事务管理器环境;
    • propagation:指定事务传播行为,默认为Required,使用Propagation.REQUIRED指定;
    • isolation:指定事务隔离级别,默认为“DEFAULT”,使用Isolation.DEFAULT指定;
    • readOnly:指定事务是否只读,默认false表示事务非只读;
    • timeout:指定事务超时时间,以秒为单位,默认-1表示事务超时将依赖于底层事务系统;
    • rollbackFor:指定一组异常类,遇到该类异常将回滚事务;
    • rollbackForClassname:指定一组异常类名字,其含义与<tx:method>中的rollback-for属性语义完全一样;
    • noRollbackFor:指定一组异常类,即使遇到该类异常也将提交事务,即不回滚事务;
    • noRollbackForClassname:指定一组异常类名字,其含义与<tx:method>中的no-rollback-for属性语义完全一样;

      用<tx:advice/>详细配置的spring声明式事物详解:<tx:advice>id用于指定此通知的名字, transaction-manager用于指定事务管理器,默认的事务管理器名字为“transactionManager”;<tx:method>:用于定义事务属性即相关联的方法名;name定义与事务属性相关联的方法名,将对匹配的方法应用定义的事务属性,可以使用“*”通配符来匹配一组或所有方法,如“save*”将匹配以save开头的方法,而“*”将匹配所有方法;propagation:事务传播行为定义,默认为“REQUIRED”,表示Required,其值可以通过TransactionDefinition的静态传播行为变量的“PROPAGATION_”后边部分指定,如“TransactionDefinition.PROPAGATION_REQUIRED”可以使用“REQUIRED”指定;

    • isolation:事务隔离级别定义;默认为“DEFAULT”,其值可以通过TransactionDefinition的静态隔离级别变量的“ISOLATION_”后边部分指定,如“TransactionDefinition. ISOLATION_DEFAULT”可以使用“DEFAULT”指定:

    • timeout事务超时时间设置,单位为秒,默认-1,表示事务超时将依赖于底层事务系统;

      read-only事务只读设置,默认为false,表示不是只读;

      rollback-for需要触发回滚的异常定义,以“,”分割,默认任何RuntimeException 将导致事务回滚,而任何Checked Exception 将不导致事务回滚;异常名字定义和TransactionProxyFactoryBean中含义一样

      no-rollback-for不被触发进行回滚的 Exception(s);以“,”分割;异常名字定义和TransactionProxyFactoryBean中含义一样;

      

  • 相关阅读:
    ABP 从数据库读取数据时的注意事项
    JQuery/JS插件 jsTree加载树,普通加载,点一级加载一级
    MVC HandleErrorAttribte特性
    GetForegroundWindow获取的是托管进程ApplicationFrameHost,而不是真正的进程,比如XD软件
    异常:System.InvalidOperationException: This implementation is not part of the Windows Platform FIPS validated cryptographic algorithms FIPS信息标准限值了MD5加密
    c# word文档的操作
    winfrom 图片裁剪 圆形头像
    css3有哪些新特性?
    元素的alt和title有什么异同?
    label的作用是什么?怎么用的?
  • 原文地址:https://www.cnblogs.com/feitianshaoxai/p/6603710.html
Copyright © 2020-2023  润新知