本文摘自:http://www.blogjava.net/jacky9881/archive/2008/01/02/172088.html
在二的基础上,我们再给这个简单web应用增加声明式事务,声明式事务原来是EJB所引以为自豪的地方,现如今Spring框架的AOP也支持这功能,关于AOP的内容,这儿不想太深入,有兴趣的读者,可以去网上找些有关Spring AOP方面的介绍,为了增加声明式事务,我们只需修改Spring的配置文件applicationContext.xml,
1.首先我们在配置文件中增加事务管理器,由于本应用采用了Hibernate,所以我们采用HibernateTransactionManager,配置如下:
1<bean id="transactionManager"
2 class="org.springframework.orm.hibernate.HibernateTransactionManager">
3 <property name="sessionFactory">
4 <ref local="sessionFactory"/>
5 </property>
6 </bean>
2.要在Sping使用声明式事务,我们得用TransactionProxyFactoryBean,它的作用就是把方法包裹在事务中,配置如下:
1<bean id="bookService"
2class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
3 <property name="transactionManager">
4 <ref local="transactionManager"/>
5 </property>
6 <property name="target">
7 <ref local=" registerTarget"/>
8 </property>
9 <property name="transactionAttributes">
10 <props>
11 <prop key="save*">
12PROPAGATION_REQUIRED,-OrderException
13</prop>
14 </props>
15 </property>
16 </bean>
下面我们简单解释一下上面配置的意思:transactionManager属性引用一个事务管理器,在这里我们引用HibernateTransactionManager,target属性指定被代理的对象,transactionAttributes属性的save*表示在代理对象中所有以save开头的方法,PROPAGATION_REQUIRED表示代理对象中所有以save开头的方法都必须在事务中运行,-OrderException表示在执行以save开头的方法时,如果有OrderException异常抛出,则事务立即回滚。
完整的applicationContext.xml的配置如下:
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
3
4<beans>
5
6 <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
7 <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
8 <property name="url" value="jdbc:mysql://localhost/register"/>
9 <property name="username" value="root"/>
10 <property name="password" value="root"/>
11 </bean>
12
13 <!-- Hibernate SessionFactory -->
14 <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
15 <property name="dataSource" ref="dataSource"/>
16 <property name="mappingDirectoryLocations">
17 <value>classpath:test\register\entity\</value>
18 </property>
19 <property name="hibernateProperties">
20 <props>
21 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
22 <prop key="hibernate.show_sql">true</prop>
23 <prop key="hibernate.generate_statistics">true</prop>
24 </props>
25 </property>
26 </bean>
27
28 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
29 <property name="sessionFactory">
30 <ref local="sessionFactory"/>
31 </property>
32 </bean>
33
34 <bean id="registerService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
35 <property name="transactionManager">
36 <ref local="transactionManager"/>
37 </property>
38 <property name="target">
39 <ref local=" registerTarget"/>
40 </property>
41 <property name="transactionAttributes">
42 <props>
43 <prop key="save*">PROPAGATION_REQUIRED,-OrderException</prop>
44 </props>
45 </property>
46 </bean>
47
48 <bean id="registerDAO" class="test.register.dao.RegisterDAO">
49 <property name="sessionFactory" ref="sessionFactory"/>
50 </bean>
51
52 <bean id="registerTarget" class="test.register.service.RegisterService">
53 <property name="registerDAO" ref="registerDAO"/>
54 </bean>
55
56</beans>
3.同时还要修改action-servlets.xml文件
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
3<beans>
4 <bean name="/register"
5class="test.register.action.RegisterAction">
6 <property name="registerService" ref="registerTarget"/>
7 </bean>
8</beans>
分享到:
相关推荐
基于Struts+Hibernate+Spring的Web_应用开发
Java.Web开发 JSP Servlet. Struts Spring Hibernate Ajax
《JavaWeb整合开发完全自学手册》介绍如何整合Struts+Hibernate+Spring+Eclipse进行J2EE开发,所有实例都基于MyEclipseIDE开发,引领读者快速进入基于JavaWeb的J2EE应用领域。《JavaWeb整合开发完全自学手册》主要...
《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》全面介绍了Java Web开发中的各种相关技术及知识。全书分为9篇,内容层次清晰,难度循序渐进。第1篇为入门篇,内容包括Java Web开发概述等;第2篇...
《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...
J2EE企业应用实战:Struts ...书的最后配备了两个实例,均采用了贫血模式的架构设计,以便于读者更快地进入J2EE 应用开发。 还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。
J2EE企业应用实战:Struts ...书的最后配备了两个实例,均采用了贫血模式的架构设计,以便于读者更快地进入J2EE 应用开发。 还介绍了Tomcat 和Jetty 两个开源Web 服务器的详细用法,以及J2EE 应用的几种常用架构。
<<Java Web 基于Spring Struts Hibernate 轻量级架构开发>>书中7-12,13章
《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》详细介绍了Java Web软件架构中的各种开发技术。主要内容包括:以MySQL为数据库、Tomcat为Web服务器、Eclipse为开发工具、CVS为版本控制工具...
JAVA WEB整合开发实例精通:Struts+Hibernate+Spring
Struts Spring Hibernate 整合教程
一种基于Struts Spring Hibernate的整合,付强,黄孝建,目前很多应用系统是建立在WEB基础上,基于B/S结构的Web应用程序也成为Internet上使用最为广泛的应用开发技术。本文才用广泛的MVC设计模�
基于Struts Spring Hibernate的整合应用,袁俊峰,孟祥武,目前,基于Web的应用程序越来越受到关注, 而Java以其独特的跨平台和对网络程序的良好支持成为开发Web程序的首选。然而随着系统规模的
本书分为6大部分,共33章,介绍了Struts1框架、Hibernate框架、Spring框架和Struts2框架的开发环境配置、框架技术基础,Struts1框架和Spring框架的整合,Struts1框架和Hibernate框架的整合,Struts1框架、Hibernate...
基于Struts+Hibernate+Spring的整合架构及其在Web开发中的应用.pdf 基于Struts+Spring+Hibernate架构的轻量级J2EE的研究与应用.pdf 基于Struts+Spring+Hibernate架构的进销存管理系统的设计与实现.pdf 基于...
精通Eclipse整合Web开发——Struts,Spring,Hibernate,JBPM 图书馆下载的,很不容易。 不是很清晰,如果介意的,请不要下载,不要拍砖。 总共有三部分。