zoukankan      html  css  js  c++  java
  • (八)Spring 事务管理

    目录

    #Spring 的事务管理

    1. 编程式事务管理一般不用

      所谓编程式,就是我们自己写代码,实现事务管理,这样还不如不用框架呢;

    2. 声明式事务管理

      1. 基于 xml 配置文件实现
      2. 基于注解实现

    Spring 事务管理 Api 介绍之 PlatformTransactionManager

    几个 api 中,最重要的一个 ;
    

    PlatformTransactionManager(事务管理器 )

    1. 对于该接口,Spring 针对不同的持久层技术,提供了不同的实现版本;

      JDBC、iBatis 对应的实现类:org.springframework.jdbc.datasource.DataSourceTransactionManager

      Hibernate5 对应的实现类:org.springframework.orm.hibernate5.HibernateTransactionManager

    2. 配置事务管理器(配置文件方式

        <!--添加 tx 约束-->
        xmlns:tx="http://www.springframework.org/schema/tx"
         xsi:schemaLocation=
          "http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx.xsd"
      
      	----------------------------------------------------	
      
      <!--配置事务管理器-->
       <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="dataSourceTransactionManager">
           <!--注入数据源-->
           <property name="dataSource" ref="dataSource"></property>
       </bean>
      
      	----------------------------------------------------	
      
         <!--配置事务增强-->
          <tx:advice transaction-manager="dataSourceTransactionManager" id="interceptor">
              <tx:attributes>
                  <!--设置增强规则 countXXX方法-->
                  <!--设置隔离性-->
                  <tx:method name="count*" propagation="MANDATORY"/>
              </tx:attributes>
          </tx:advice>
      
      	----------------------------------------------------	
      
          <!--配置切面-->
          <aop:config>
              <!--配置切入点-->
              <aop:pointcut id="point1" expression="execution(* ijava.xin.aop.UserDao.*(..))"></aop:pointcut>
              <!--配置切面-->
              <!--增强对象,和切入点对象-->
              <aop:advisor advice-ref="interceptor" pointcut-ref="point1"></aop:advisor>
          </aop:config>
      
    3. 配置事务管理器(注解方式

        <!--添加 tx 约束-->
        xmlns:tx="http://www.springframework.org/schema/tx"
         xsi:schemaLocation=
          "http://www.springframework.org/schema/tx   http://www.springframework.org/schema/tx/spring-tx.xsd"
      
      	----------------------------------------------------	
      
          <!--配置事务管理器-->
           <bean class="org.springframework.jdbc.datasource.DataSourceTransactionManager" id="dataSourceTransactionManager">
               <!--注入数据源-->
               <property name="dataSource" ref="dataSource"></property>
           </bean>
      	
      	----------------------------------------------------	
      	
              <!--开启事务注解-->
          <tx:annotation-driven transaction-manager="dataSourceTransactionManager"></tx:annotation-driven>
      
      
      

      最后在想要开启事务的方法所在类上,写注解 @Transactional ;然后 spring 就会寻找写了该注解的类,为其方法,都开启事务


    这2个,基本不用啥,主要是上面的 事务管理器 ;
    
    • TransactionDefinition (事务定义信息)
    • TransactionStatus(事务具体运行状态)

    后记

    spring 的事务管理,还是使用了 aop 的思想 ,对我们配置的方法,进行了增强,使用了事务,底层可能使用了 环绕通知

  • 相关阅读:
    day67——前后端传输数据的编码格式、ajax传json数据/传文件、批量插入
    day66——choices参数、MTV/MVC模型、三种创建多对多的方式、AJAX
    day65——聚合函数、分组查询、F与Q查询、django开事务、orm查询优化
    dayⅢ、基本数据类型+运算符作业
    dayⅡ:编程语言+变量+垃圾回收制
    dayⅡ:变量作业
    dayⅠ:计算机基础知识
    ⅩⅥ:无参装饰器
    ⅩⅤ:作业
    ⅩⅤ:名称空间与作用域
  • 原文地址:https://www.cnblogs.com/young-youth/p/11665685.html
Copyright © 2011-2022 走看看