Spring如何实现声明式事务

解决方案 »

  1.   

    transactionManager                                                       c
      

  2.   

    <bean id="transactionManager"
    class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory">
    <ref local="sessionFactory" />
    </property>
    </bean>
      

  3.   

    在applicationContext.xml添加
    <!-- 创建事务管理器 -->
    <bean id="transactionManager"   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory" />
    </bean>
    <!--1.可以用 注解方式进行事务管理 -->
        <tx:annotation-driven transaction-manager="transactionManager"/>
    <!--2.还有一种是用aop的形式进行事物管理 -->
    <tx:advice id="txAdvice" transaction-manager="myHibTxManager">
      <tx:attributes>
        <!-- 对get/load/search开头的方法要求只读事务 -->
         <tx:method name="get*" propagation="SUPPORTS" read-only="true" />
         <tx:method name="load*" propagation="SUPPORTS" read-only="true" />
         <tx:method name="search*" propagation="SUPPORTS" read-only="true" />
         <!-- 对其它方法要求事务 -->
         <tx:method name="*" propagation="REQUIRED" />
       </tx:attributes>
    </tx:advice>
    <aop:config>
    <!-- 
    只对GoodsBiz添加事务支持,因为前面配置的transactionManager
    是专对Hibernate的事务管理器 。
    -->
       <aop:pointcut id="bizMethods"
    expression="execution(* com.aptech.jb.epet.*.*(..))" />
       <!-- 织入 -->
       <aop:advisor advice-ref="txAdvice" pointcut-ref="bizMethods" />
    </aop:config>
      

  4.   

    恩 楼上正解 aop 与tx