基于Struts+Spring+Hibernate的Web应用框架的搭建(三)
来源:互联网 发布:深孔钻软件 编辑:程序博客网 时间:2024/06/06 01:51
在二的基础上,我们再给这个简单web应用增加声明式事务,声明式事务原来是EJB所引以为自豪的地方,现如今Spring框架的AOP也支持这功能,关于AOP的内容,这儿不想太深入,有兴趣的读者,可以参见本blog上有关Spring AOP方面的介绍,为了增加声明式事务,我们只需修改Spring的配置文件applicationContext.xml,
1.首先我们在配置文件中增加事务管理器,由于本应用采用了Hibernate,所以我们采用HibernateTransactionManager,配置如下:
<bean id="transactionManager"
class="org.springframework.orm.hibernate.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
2.要在Sping使用声明式事务,我们得用TransactionProxyFactoryBean,它的作用就是把方法包裹在事务中,配置如下:
<bean id="bookService"
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local=" registerTarget"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">
PROPAGATION_REQUIRED,-OrderException
</prop>
</props>
</property>
</bean>
下面我们简单解释一下上面配置的意思:transactionManager属性引用一个事务管理器,在这里我们引用HibernateTransactionManager,target属性指定被代理的对象,transactionAttributes属性的save*表示在代理对象中所有以save开头的方法,PROPAGATION_REQUIRED表示代理对象中所有以save开头的方法都必须在事务中运行,-OrderException表示在执行以save开头的方法时,如果有OrderException异常抛出,则事务立即回滚。
完整的applicationContext.xml的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost/register"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</bean>
<!-- Hibernate SessionFactory -->
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mappingDirectoryLocations">
<value>classpath:test/register/entity/</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
</props>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory"/>
</property>
</bean>
<bean id="registerService" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
<property name="transactionManager">
<ref local="transactionManager"/>
</property>
<property name="target">
<ref local=" registerTarget"/>
</property>
<property name="transactionAttributes">
<props>
<prop key="save*">PROPAGATION_REQUIRED,-OrderException</prop>
</props>
</property>
</bean>
<bean id="registerDAO" class="test.register.dao.RegisterDAO">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<bean id="registerTarget" class="test.register.service.RegisterService">
<property name="registerDAO" ref="registerDAO"/>
</bean>
</beans>
3.同时还要修改action-servlets.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans>
<bean name="/register"
class="test.register.action.RegisterAction">
<property name="registerService" ref="registerTarget"/>
</bean>
</beans>
<代码下载>
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(三)
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(一)
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(二)
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(四)
- struts+spring+hibernate的web应用 架构搭建
- struts+spring+hibernate的web应用 架构搭建
- struts+spring+hibernate的web应用 架构搭建
- struts+spring+hibernate的web应用 架构搭建
- (转)struts+spring+hibernate的web应用(一)架构搭建
- struts+spring+hibernate的web应用<一> 架构搭建
- Struts,Spring,Hibernate三大框架的
- 使用struts + spring + hibernate组装你的web应用框架(转载)
- java传统框架ssh---struts、spring、hibernate框架的搭建
- JAVA-WEB的SSH(Spring Hibernate Struts)环境搭建一(Spring+Hibernate)
- SSH(spring +hibernate+struts2)三大框架的搭建
- (转)struts+spring+hibernate的web应用(三) Service层代码编写
- struts+spring+hibernate的web应用<三> Service层代码编写
- 基于Spring+Hibernate+Struts框架分页的一种实现
- Sina Blog VS MSN Space
- rac下的tnsname的写法
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(二)
- Tangram商业版本预览(一)
- eclipse快捷键指南
- 基于Struts+Spring+Hibernate的Web应用框架的搭建(三)
- BI构架及相关技术简介
- HTML中Form表单提交时,采用 get和post的区别
- 初识数据仓库(Data Warehousing)-“掀起你的盖头来”
- VC++中关于字节对齐的问题
- 简述数据库与数据仓库的区别
- JSF是初学者进入Java Web世界的跳板
- 软件测试考试模拟题
- 寻访罗宾汉(转自清韵论坛冯·迪特里施的专栏)