zoukankan      html  css  js  c++  java
  • spring声明式事务管理

     spring的事务管理

     

        spring的事务管理有两种,一种是编程式的事务管理,还有一种是声明式事务管理。编程式事务管理比较灵活,但是代码量大,存在相互重复的代码;声明式事务管理比编程式事务管理更为灵活。

    一、声明式事务管理(配置文件+spring注解)

        1、搭建好相关的ssh框架应用。

        2、编写相关的配置文件:applicationContext.xml  具体请参考如下代码:

        <bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager">
            <property name="sessionFactory" ref="mySessionFactory"></property>
        </bean>
    
         <tx:annotation-driven transaction-manager="transactionManager" /> 

         3、spring注解:

          ⑴、在类上注解:

                                   ↓

          

          ⑵、在具体的方法上注解:

              

    二、声明式事务管理(纯spring配置文件)

      1、搭建好相关的ssh框架

      2、配置声明式事务管理的spring的配置文件:applicationContext.xml,具体请参考代码:

    假定这个tx:advice 标签是springAOP中 handler
     那么下面的aop:config就是springAOP中的target 

     解析:

        tx:advice假定是handler(代理),这个handler需要引用一个(事务管理器)transactionManager

        定义一个bean作为事务管理对象,添加一个class属性,值需要为hibernate5.X的版本。

        tx:attributes标签下的子标签有一个tx:method中的name属性是dao中的方法名,一般来说是add(增)delete(删)modify(改)query(查询),查询一般设置只读。这里使用通配符以适应不用的命名规则。propagation设置事务的传播行为,一般设置为默认值REQUIRED。

        aop:config下的aop:pointcut标签,顾名思义切面。其中expression设置是哪里需要添加事务管理,也就是AOP中的切面。比如说:开启事务,提交事务,关闭session等这些通用的相同的代码,把他们设置为一个切面。免去重复书写。本例在dao包下的所有方法进行添加事务管理,也就是在dao包所有的类都不需要做开启事务,提交事务,关闭session的事情了,这些事情全部交给transactionManager来做。

    最后的aop:advisor标签把tx:advice和aop:pointcut进行连接,实现了声明式事务管理。

    。。。。。。。。。。。。。。。。

    纯配置文件和配置文件+注解区别: 二者的最大的区别就是耦合性的问题。纯配置文件和spring框架的耦合程度低,而配置文件+注解和spring框架的耦合性程度高,但是代码的可读性较高。

       

  • 相关阅读:
    排序算法:冒泡排序
    排序算法: 插入排序
    排序算法:折半插入排序
    排序算法:快速排序
    浅谈C/C++回调函数(Callback)& 函数指针
    仿函数
    回溯法:求和
    动态规划:数字和为sum的方法数
    字典序
    剑指offer15 二进制中1的个数
  • 原文地址:https://www.cnblogs.com/chaoben/p/5849794.html
Copyright © 2011-2022 走看看