您的位置:首页 > 编程语言 > Java开发

J2EE Spring + Hibernate + Struts整合及框架事务管理

2011-08-25 15:50 447 查看
J2EE Spring + Hibernate + Struts整合及框架事务管理
SSH整合:

1、 为strust配置加载spring上下文的插件:

在struts-config.xml文件中添加:

<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">

<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
如有多个(有时候有事务的文件),须用逗号分割

使用spring代理struts请求:

<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"></controller>

工厂在web.xml中添加加载项及监听:

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/trancactionContext.xml,/WEB-INF/applicationContext.xml,/WEB-INF/jsp/sysmgr/applicationContext.xml,/WEB-INF/jsp/wfclient/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>

2、框架事务管理

通过数据库连接池的数据源:

<bean id="dataSource"
class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/DakarDS</value>
</property>
</bean>

也可以将数据源的信息写在配置文件中,不采用连接池的方式,直接使用DriverManagerDataSource.

大对象处理:

<bean id="oracleLobHandler"
class="org.springframework.jdbc.support.lob.OracleLobHandler"
lazy-init="true">
<property name="nativeJdbcExtractor">
<ref local="nativeJdbcExtractor" />
</property>
</bean>

Session工厂:

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="lobHandler">
<ref local="oracleLobHandler" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.dialect">
org.hibernate.dialect.Oracle9Dialect
</prop>
</props>
</property>
<property name="mappingResources">
<list> <value>com/eshore/dakar/database/entity/certificate/RelateSapCertificateCode.hbm.xml</value>
</list>
</property>
</bean>

事务管理器采用Hibernate事务管理

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>

添加事务拦截,需配置事务管理器及事务属性,异常处理回滚操作等,指定所有方法均参与事务,且采用当前事务,遇异常回滚:

<bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager" ref="transactionManager" />
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED,-Exception</prop>
</props>
</property>
</bean>
创建根据BEAN名称来进行事务代理,该BEAN由框架加载,无需设置ID.经过此设置后,所有的涉及事务的类名后缀均需为**Facade及messageContext,securityContext类:
<bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>*Facade</value>
<value>messageContext</value>
<value>securityContext</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>transactionInterceptor</value>
</list>
</property>
</bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐