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

下载本文档

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

文档简介

1、S 详细讲解 SH 中 Spring 事务流程Struts+hibernate+spring整合开发web应用是相当流行的,只需要简单 的配置就能轻松的对数据库进行 crud操作,下面就hibernated spring的配 置做一下剖析,一边与大伙儿一起分享体会:1、 预备工作:能够利用hibernate tools生成有关映射文件差不多 po对象、dao对象, dao也能够自己手动编写,无非确实是实现 crud,如果通过继承hibernate 提供的HibernateDaoSupport则能够更轻松的实现关键就在于配置文件,下面看一个样例app.xml: true pnlynlyPROPA

2、GATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIRED/proPROPAGATION_REQUIRED,readOnlyPROPAGATION_REQUIRED,readOPROPAGATION_REQUIRED,readOlyPROPAGATION_REQUIRED,readOnlyPROPAGATION_REQUIRED,readOnyPROPAGATION_REQUIRED,readOnly !-能够看到配置文件的步骤:1、配置数据源2、配置会话工厂 (

3、依靠注入上面的数据源, 还要注入 hbm 映射文件 注意正确的位置 、hibernate 属性文件)3、配置事务治理器(依靠注入上面的会话工厂)4、 Spring 中声明事务治理器(按照需要又可分为几种,但都要依靠 注入上面的事务治理器,此外还需要配置transationAttributes)后面的一些一般的bean配置就不用讲了上面的例子中使用的声明事务治理器是: TransactionProxyFactoryBean, 如此的话我们就需要在后面配置目标bea n,例如上面的例子中我们的原服务对象是id为us的UserService (没有实现接口),因此我们为他配置了 id 为userSe

4、rvice的代理对象(目标bean),程序中使用时只能通过使用代理对 象才能实现数据库操作功能(代理对象的父类是上面声明的事务治理器, 一边我们使用的时候开启事务) ,如果直截了当使用服务对象就无法开启事 务程序中调用: UserService us = (UserService) app.getBean(userService );注:userService确实是上面配置的代理对象的id,而不是原服务对象 的 id然而如果我们想通过原服务对象的 id 来使用对象,则我们需要使用代 理事务治理器BeanNameAutoProxyCreator (按照beanname自动代理),上 面的配置文件

5、需要做改动,做两件事(因此先要删除原先配置的 Transactio nProxyFactoryBean,不然就纷乱了,可能会报错的):1、 增加一个事务拦截器bea n id=tra nsactio nln terceptor class二PROPAGATlON_REQUlREDPROPAGATlON_REQUlRED PROPAGATlON_REQUlREDPROPAGATION_REQUIREDPROPAGATION_REQUIREDPROPAGATION_REQUIRED,readOnly PROPAGATION_REQUIRED,readO nlyPROPAGATION_REQUIRE

6、D,readO nlyPROPAGATION_REQUIRED,readOn lyPROPAGATION_REQUIRED,readOnly PROPAGATION_REQUIRED,readOnl yPROPAGATION_REQUIRED,readOnly2、 定义自动代理事务治理器!-ustransactionInterceptor然后我们在程序中调用时应如下:UserService us = (UserService) app.getBean(us);注:注意与上面使用TransactionProxyFactoryBean时的调用区不,此处 我们用getbean时直截了当取原服务层对象

7、的id,不需要去配置目标bea, 这也正是Bea nN ameAutoProxyCreator按照bean名称自动代理)的含义所在附录:1、关于 hibernate 的属性详解:Hibernate 会话厂 SessionFactorySession 确实是用于每次与数据库会话的,因此需要:数据库的配置参数,这些参数确实是 上面的数据源指定的 ! 因此我们 只需引用即可: ref=dataSource;实体映射配置 配置结果缓存配置 (那个地点使用的是开源的 ehcache)$hibernate.dialecttruetruetrue2!-结果缓存配置: - 将 ehcache.xml 置于 c

8、lasspath 中- 如果不设置 “查询缓存”,那么hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用 findall()、 list()、Iterator。、createCriteria()、createQuery(等方法获得的数据结果集的话, 就需要设置才行-在 Hbm 文件中添力口 -如果需要“查询缓存”,还需要在使用Query或Criteria。时设置其setC acheable(true)属性-2、 Spring 的 tran sacti on AttributesPROPAGATION_REQUIRED :支持当前事务,如果当前没有事务,就 新建一

9、个事务。这是最常见的选择。PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就 以非事务方式执行。PROPAGATION_MANDATORY :支持当前事务,如果当前没有事务, 就抛出专门。PROPAGATION_REQUIRES_NEW :新建事务,如果当前存在事务, 把当前事务挂起。PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当 前存在事务,就把当前事务挂起。PROPAGATION_NEVER :以非事务方式执行,如果当前存在事务,则 抛出专门。PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与 PROPAGATION_REQUIRED 类似的操作。 赞同PROPAGATION_

温馨提示

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

最新文档

评论

0/150

提交评论