spring事务管理

-----------------------
Spring的事务管理
-------------------------

Spring提供了以下两种事务管理方法

第一种方法:声明式事务管理

---------------------------------------------
   以AOP配置的形式实现事务管理:
    applicationContext-transaction.xml
----------------------------------------------------
  
    JDBC事务管理的方面组件:(DataSourceTransactionManager)
  
    Hibernate事务管理的方面组件:(HibernateTransactionManager)
   
    事务管理通知:<tx:advice>
 
    切入点:根据实际情况编写表达式
   
例子:
 <!-- 定义事务管理Bean -->

  <bean id="txManager"
   class="org.springframework.orm.hibernate3.HibernateTransactionManager">
   <property name="sessionFactory" ref="sessionFactory">
   </property>
  </bean>
  
 <!-- 定义通知 -->
 
  <tx:advice id="txAdvice"
   transaction-manager="txManager">
   <!-- 指定目标组件中的哪些方法采用哪种事务管理方式 -->
   <tx:attributes>
    <tx:method name="find*" read-only="true"
     propagation="REQUIRED"/>
    <tx:method name="get*" read-only="true"
     propagation="REQUIRED"/>
    <tx:method name="save*" propagation="REQUIRED"/>
    <tx:method name="update*" propagation="REQUIRED"/>
    <tx:method name="delete*" propagation="REQUIRED"/>
   </tx:attributes>
  </tx:advice>
  
 <!-- AOP配置,将通知和切入结合(目标对象) -->
 
  <aop:config>
   <!-- 将所有DAO当做目标 -->
   <aop:pointcut id="servicepointcut"
    expression="within(com.tarena.netctoss.dao..*)"/>
   <!-- 关联Advice和Pointcut -->
   <aop:advisor advice-ref="txAdvice"
    pointcut-ref="servicepointcut"/>
  </aop:config>

   
------------------------------------------------
  如果采用注解方式配置事务
  applicationContext-transaction-annotation.xml
--------------------------------------------------

   首先在applicationContext中开启事务注解
  
    <!-- 定义事务管理Bean -->
 
    <bean id="txManager"
     class="org.springframework.orm.hibernate3.HibernateTransactionManager">
     <property name="sessionFactory" ref="sessionFactory">
     </property>
    </bean>
   
    <!-- 开启事务注解配置 -->
   
    <tx:annotation-driven
     transaction-manager="txManager"/>
 
   然后在目标组件中,使用@Transactional.
  
   该标记可用在类定义和方法定前。类定义前指定全局,方法定以前指定当前方法。
  
  例子:
  
   @Transactional//默认采用REQUIRED方式管理事务
   类前使用
  
   @Transactional(readOnly=true,propagation=Propagation.REQUIRED)
   方法前使用
  
  
  
  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值