6.spring事务

J2EE 应用的事务有两种:

           全局事务和局部事务;全局事务由应用服务器管理,需要底层服务器JTA支持,局部事务,则采用jdbc技术,connection连接来操作事务,hibernate 事务,则是用session来操作事务。

       Spring 事务策略核心是PlatformTrationActionManager这个接口,该接口下面包含三个为实现的抽象方法:

      getTransaction,commit,rollback.

      spring 事务管理机制是典型的策略模式,它只提供接口,但是并不关心底层是怎样管理事务,开始事务,提交事务,回滚事务。

       JTA 全局事务:

            配置JNDI数据源Bean

           <bean id="dataSource" class="JNDIObjectFactoryBean"/>

               <property name="jndiName" value="jdbc/jpetstore"/>

         < /bean>

      JDBC局部事务:

        配置JDBC数据源的局部事务管理器,使用的是DataSourceTranceactionManager

      <bean id="transactionManager"  class="org.DataSourceTranceactionManager">

        <property name="dataSource" ref="dataSource"/>

      </bean>

     hibernate局部事务:

             配置sessionFactory bean 并且注入dataSource 以及列出所有的PO映射文件以及配置hibernate的方言和hibernate创建映射数据表

            采用全局事务进行管理

           

     

     

声明事务:
  1.声明式事务能大大的降低开发者的代码书写量,而且声明式事务几乎不影响应用的代码,因此无论底层事务策略如何变化,应用程序无需改变;
   
  2.应用程序代码无须任何事务处理代码,可以更专注业务逻辑层
   
  3.Spring 则可对任何pojo的方法提供事务管理,而且Spring的声明式事务管理,无须容器的支持。
  
  4.Spring 采用Aop的方式管理事务,因此,可以在事务回滚动作中插入用户自己的动作,而不仅仅是执行系统默认的回滚
声明式事务使用的是TransactionProxyFactory来配置事务代理Bean


 如何配置:
  1.首先配置一个DataSourceTransactionManager JDBC局部事务管理器 并注入dataSource
  2.配置一个业务逻辑Bean 并且注入dataSource
  
  3.创建一个指定的事务管理器
   <tx:advice id="txAdvice" transaaction-manager="transaactionManager">
       <tx:attributes>
             //以get为开头的bean
             <tx:method name="get.*" read-obly="true"/>
              <tx:method name="*"/>
       </tx:attributes>
    </tx:advice>
  4.配置Aop的元素
    <aop:config>
          //配置切点
          <aop:poincut id="myPoint" expression="execution(* org.crazyit.app.dao.impl.)"
          <aop:advisor advice-ref="txAdvice" pointcut-ref="myPoint"/>  //切面引入该切点

   </aop:config>


advice ---》transaactionManager---》attrubute--->method

method:

    事务传播行为;

    事务隔离级别;

    超时:

    异常回滚:

   没有异常回滚:

采用注解的方式 <tx:annotation-driven transaction-manager="transactionManager"/>来进行spring事务的配置管理


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值