Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3334390
  • 博文数量: 530
  • 博客积分: 13360
  • 博客等级: 上将
  • 技术积分: 5473
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-13 13:32
文章分类

全部博文(530)

文章存档

2017年(1)

2015年(2)

2013年(24)

2012年(20)

2011年(97)

2010年(240)

2009年(117)

2008年(12)

2007年(8)

2006年(9)

分类: Java

2010-11-20 23:12:07

Spring通过AOP实现声明式事务管理。通常通过TransactionProxyFactoryBean设置Spring事务代理。我们需要一个目标对象包装在事务代理中。这个目标对象一般是一个普通Java对象的bean。当我们定义TransactionProxyFactoryBean时,必须提供一个相关的 PlatformTransactionManager的引用和事务属性。 事务属性含有上面描述的事务定义。

PlatformTransactionManager

HibernateTransactionManager需要一个SessionFactory的引用

JtaTransactionManager

一.把事务放置在了DAO层:

       class="org.springframework.orm.hibernate3.HibernateTransactionManager">

      

             

      

层接口实现-->

       class="com.vstsoft.querycompany.dao.impl.CompanyDAOImpl">

      

             

      

DAO层的事务代理-->

       class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

      

             

      

      

             

      

      

             

              PROPAGATION_REQUIRED

              PROPAGATION_REQUIRED

             

              PROPAGATION_REQUIRED,readOnly

             

             

      

业务层接口实现,把DAO注入到Service里面-->

       class="com.vstsoft.querycompany.service.impl.CompanyManageTarget">

      

             

      

Service层的代理-->

       class="org.springframework.aop.framework.ProxyFactoryBean">

      

              com.vstsoft.querycompany.service.CompanyManage

      

      

             

      

配置struts访问,把service层注入到action里面-->

       class="com.vstsoft.querycompany.web.action.CompanyAction" singleton="false">

      

             

      

二.把事务放置在了Service层:

       class="org.springframework.transaction.jta.JtaTransactionManager" />

层接口实现-->

       class="com.vstsoft.querycompany.dao.impl.CompanyDAOImpl">

      

             

      

DAO层的代理-->

       class="org.springframework.aop.framework.ProxyFactoryBean">

      

              com.vstsoft.querycompany.dao.CompanyDAO

      

      

             

      

业务层接口实现,把DAO注入到Service里面-->

       class="com.vstsoft.querycompany.service.impl.CompanyManageTarget">

      

             

      

代理业务层的事务管理-->

       class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">

      

             

      

      

             

                     PROPAGATION_REQUIRED

                     PROPAGATION_REQUIRED,readOnly

             

      

      

             

      

配置struts访问,把service层注入到action里面-->

       class="com.vstsoft.querycompany.web.action.CompanyAction" singleton="false">

      

             

      

service层的接口实现CompanyManageImpl里面有个setData方法:按顺序执行数据查询,数据删除,数据插入数据库行为,如果哪一步出异常(运行时异常),事务回滚,只有所有行为都没成功,事务提交

相关文章:

阅读(1057) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~