S详细讲解SH中Spring事务流程_第1页
S详细讲解SH中Spring事务流程_第2页
S详细讲解SH中Spring事务流程_第3页
S详细讲解SH中Spring事务流程_第4页
S详细讲解SH中Spring事务流程_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、给你详细讲一下SSH框架的事物管理,希望对你有帮助。Struts+hibernate+spring整合开发web应用是相当流行的,只需要简单的配置就能轻松的对数据库进行crud操作,下面就hibernatespring的配置做一下剖析,一边与大家一起分享经验:1、 准备工作:可以利用用hibbernnatee tooolss生成相相关映射射文件已已经poo对象、daoo对象,daoo也可以以自己手手动编写写,无非非就是实实现crrud,如果通通过继承承hibbernnatee提供的的HibbernnateeDaooSuppporrt,则则可以更更轻松的的实现关键就在在于配置置文件,下面看看一个

2、样样例appp.xxml: ccom/ouyya/UUserr.hbbm.xxml orrg.hhibeernaate.diaalecct.MMySQQLDiialeect ttruee truue PROOPAGGATIION_REQQUIRRED PROOPAGGATIION_REQQUIRRED PROOPAGGATIION_REQQUIRRED PROOPAGGATIION_REQQUIRRED PROOPAGGATIION_REQQUIRRED PRROPAAGATTIONN_REEQUIIREDD,reeadOOnlyy PROOPAGGATIION_REQQUIRRED,reaa

3、dOnnly PROOPAGGATIION_REQQUIRRED,reaadOnnly PPROPPAGAATIOON_RREQUUIREED,rreaddOnlly PRROPAAGATTIONN_REEQUIIREDD,reeadOOnlyy PPROPPAGAATIOON_RREQUUIREED,rreaddOnlly PROOPAGGATIION_REQQUIRRED,reaadOnnly !- 可以看到到配置文文件的步步骤:1、 配置数数据源2、 配置会会话工厂厂(依赖赖注入上上面的数数据源,还要注注入hbbm映射射文件注意正正确的位位置、hibbernnatee属性文文件)3、 配

4、置事事务管理理器(依依赖注入入上面的的会话工工厂)4、 Sprringg中声明明事务管管理器(根据需需要又可可分为几几种,但但都要依依赖注入入上面的的事务管管理器,此外还还需要配配置trranssatiionAAttrribuutess)后面的一一些普通通的beean配配置就不不用说了了上面的例例子中使使用的声声明事务务管理器器是:TTrannsacctioonPrroxyyFacctorryBeean,这样的的话我们们就需要要在后面面配置目目标beean,比如上上面的例例子中我我们的原原服务对对象是iid为uus的UUserrSerrvicce(没没有实现现接口),所以以我们为为他配置置了i

5、dd为usserSServvicee的代理理对象(目标bbeann),程程序中使使用时只只能通过过使用代代理对象象才能实实现数据据库操作作功能(代理对对象的父父类是上上面声明明的事务务管理器器,一边边我们使使用的时时候开启启事务),如果果直接使使用服务务对象就就无法开开启事务务程序中调调用:UUserrSerrvicce uus = (UUserrSerrvicce) appp.geetBeean(usserSServvicee);注:usserSServvicee就是上上面配置置的代理理对象的的id,而不是是原服务务对象的的id但是如果果我们想想通过原原服务对对象的iid来使使用对象象,则我

6、我们需要要使用代代理事务务管理器器BeaanNaameAAutooProoxyCCreaatorr(根据据beaannaame自自动代理理),上上面的配配置文件件需要做做改动,做两件件事(当当然先要要删除原原来配置置的TrranssacttionnProoxyFFacttoryyBeaan,不不然就混混乱了,可能会会报错的的):1、 增加一一个事务务拦截器器 PROOPAGGATIION_REQQUIRRED PROOPAGGATIION_REQQUIRRED PROOPAGGATIION_REQQUIRRED PROOPAGGATIION_REQQUIRRED PROOPAGGATIION_

7、REQQUIRRED PRROPAAGATTIONN_REEQUIIREDD,reeadOOnlyy PROOPAGGATIION_REQQUIRRED,reaadOnnly PROOPAGGATIION_REQQUIRRED,reaadOnnly PPROPPAGAATIOON_RREQUUIREED,rreaddOnlly PRROPAAGATTIONN_REEQUIIREDD,reeadOOnlyy PPROPPAGAATIOON_RREQUUIREED,rreaddOnlly PROOPAGGATIION_REQQUIRRED,reaadOnnly 2、 定义自自动代理理事务管管理器!

8、- uss trranssacttionnIntterccepttor 然后我们们在程序序中调用用时应如如下:UserrSerrvicce uus = (UUserrSerrvicce) appp.geetBeean(uss);注:注意意与上面面使用TTrannsacctioonPrroxyyFacctorryBeean时时的调用用区别,此处我我们用ggetbbeann时直接接取原服服务层对对象的iid,不不需要去去配置目目标beea,这这也正是是BeannNammeAuutoPProxxyCrreattor(根据bbeann名称自自动代理理)的含含义所在在附录:1、关于于hibbernnat

9、ee的属性性详解:Hibeernaate 会话厂厂 SeessiionFFacttoryySesssionn 就是是用于每每次与数数据库会会话的,因此需需要:数据库的的配置参参数,这这些参数数就是 上面的的数据源源指定的的! 因因此我们们只需引引用即可可: rref=daataSSourrce;实体映射射配置 hibbernnatee.cffg.xxml 配置结果缓存存配置(这里使使用的是是开源的的 ehhcacche)orgg/spprinngfrrameeworrk/ssamppless/jppetsstorre/ddomaain/Acccounnt.hhbm.xmllorgg/sppri

10、nngfrrameeworrk/ssamppless/jppetsstorre/ddomaain/Bannnerr.hbbm.xxmlorgg/spprinngfrrameeworrk/ssamppless/jppetsstorre/ddomaain/Cattegoory.hbmm.xmmlorgg/spprinngfrrameeworrk/ssamppless/jppetsstorre/ddomaain/Invventtoryy.hbbm.xxmlorgg/spprinngfrrameeworrk/ssamppless/jppetsstorre/ddomaain/Iteem.hhbm.xml

11、lorgg/spprinngfrrameeworrk/ssamppless/jppetsstorre/ddomaain/LinneIttem.hbmm.xmmlorgg/spprinngfrrameeworrk/ssamppless/jppetsstorre/ddomaain/Ordder.hbmm.xmmlorgg/spprinngfrrameeworrk/ssamppless/jppetsstorre/ddomaain/Prooducct.hhbm.xmllorgg/spprinngfrrameeworrk/ssamppless/jppetsstorre/ddomaain/Suppplii

12、er.hbmm.xmml$hiiberrnatte.ddiallectttruuettrueettruee21000500uppdatteuppdatte!-结果缓缓存配置置:- 将ehhcacche.xmll 置于于 cllassspatth 中中- 如如果不设设置“查查询缓存存”,那么hiiberrnatte只会会缓存使使用looad()方法法获得的的单个持持久化对对象,如如果想缓缓存使用用finndalll()、 llistt()、Iterratoor()、crreatteCrriteeriaa()、creeateeQueery()等方方法获得得的数据据结果集集的话,就需要要设置hibe

13、ernaate.cacche.usee_quueryy_caachee trrue 才行- 在HHbm文文件中添添加-如果需要要“查询询缓存”,还需需要在使使用Quueryy或Crriteeriaa()时时设置其其settCaccheaablee(trrue);属性性-trrueorgg.hiiberrnatte.ccachhe.EEhCaacheeProovidder2、Spprinng的ttrannsacctioonAtttriibuttesPROPPAGAATIOON_RREQUUIREED:支支持当前前事务,如果当当前没有有事务,就新建建一个事事务。这这是最常常见的选选择。PROPPA

14、GAATIOON_SSUPPPORTTS:支支持当前前事务,如果当当前没有有事务,就以非非事务方方式执行行。PROPPAGAATIOON_MMANDDATOORY:支持当当前事务务,如果果当前没没有事务务,就抛抛出异常常。PROPPAGAATIOON_RREQUUIREES_NNEW:新建事事务,如如果当前前存在事事务,把把当前事事务挂起起。PROPPAGAATIOON_NNOT_SUPPPORRTEDD:以非非事务方方式执行行操作,如果当当前存在在事务,就把当当前事务务挂起。PROPPAGAATIOON_NNEVEER:以以非事务务方式执执行,如如果当前前存在事事务,则则抛出异异常。PROPPAGAATIOON_NNESTTED:如果当当前存在在事务,则在嵌嵌套事务务内执行行。如果果当前没没有事务务,则进进行与PPROPPAGAA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论