- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Spring管理事务操作的几种方式
Spring管理事务操作的几种方式
在java工程中,通常会涉及到事务操作处理。通过Spring可以实现对事务操作的管理,简化代码。下面详细介绍Spring管理事务操作的几种方式及其具体应用。
在讲解具体操作方式之前,先定义公共的bean信息,xml文件中实现代码如下:
Xml代码
在定义hibernate的配置文件中添加以下代码,声明事物操作bean:
!-- 定义事务管理器(声明式的事务) --
bean id=transactionManager
class=org.springframework.orm.hibernate3.HibernateTransactionManager
property name=sessionFactory
ref local=sessionFactory /
/property
/bean
在定义service的配置文件中添加以下代码,声明service bean:
!-- 业务逻辑层(是对各个DAO层的正面封装)主要用到门面模式 --
bean id=fundService
class=com.jack.fund.service.serviceimpl.FundService
property name=operdao
ref bean=operatorDAO /
/property
/bean
可能还有其他很多模块。bean id=fundService/可能只是其中的模块。
在实际应用时,只要将需要事务处理的service方法名称定义为以delete、update、add、save开头,在运行时出现异常后,会自动回滚。
第一种:配置声明式事务的方法如下。
这种是我们最常用的方法了,它适用于你的库表比较少的情况下。
Xml代码
bean id=fundServiceDAOProxy
class=org.springframework.transaction.interceptor.TransactionProxyFactoryBean
!-- 配置事务管理器 --
property name=transactionManager
ref bean=transactionManager /
/property
!-- 此属性指定目标类本省是否是代理的对象.如果目标类没有实现任何类,就设为true代表自己 --
property name=proxyTargetClass
valuefalse/value
/property
property name=proxyInterfaces
valuecom.jack.fund.service.IFundService/value
/property
!-- 目标bean --
property name=target
ref bean=fundService /
/property
!-- 配置事务属性 --
property name=transactionAttributes
props
prop key=delete*PROPAGATION_REQUIRED/prop
prop key=add*PROPAGATION_REQUIRED/prop
prop key=update*PROPAGATION_REQUIRED/prop
prop key=save*PROPAGATION_REQUIRED/prop
prop key=find*PROPAGATION_REQUIRED,readOnly/prop
/props
/property
/bean
以下可能还有其他的xxxServiceDAOProxy.大家可以看出针对每一个功能模块配置一个业务代理服务。
如果模块多大话,就显得代码有点多了,发现他们只是稍微一点不一样。这时我们就应该想到继承的思想。用第二种方法。
第二种:配置声明式事务的方法如下。
这种情况适合相对比较多的模块时使用
Xml代码
!-- 利用继承的思想简化配置,要把abstract=true --
bean id=transactionBase
class=org.springframework.transaction.interceptor.Transact
文档评论(0)