zoukankan      html  css  js  c++  java
  • 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中含义一样;

      

  • 相关阅读:
    解决Android Studio和Android SDK Manager无法在线更新的问题[转]
    Git 推送和删除标签
    使用adbWireless无线调试Android真机设备[转]
    Android模拟器对应的电脑快捷键说明
    Windows下用cmd命令安装及卸载服务[转]
    重置SQLSERVER表的自增列,让自增列重新计数【转】
    解决“SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的访问……”【转】
    网页编辑器CKEditor4.3.1+CKFinder2.4+JW Player6.7(视频播放器)集成
    JW Player 6.7(网页视频播放器,可在手机中播放),自定义Logo和右键菜单链接,支持MP3、MP4、FLV等格式,支持通过HTML5、FLash播放
    Sqlserver列出所有数据库名,表名,字段名【转】
  • 原文地址:https://www.cnblogs.com/feitianshaoxai/p/6603710.html
Copyright © 2011-2022 走看看