2008-06-06
如何在spring配置多个Hibernate数据源链接
关键字: 一个项目中多数据源配置现在的好多项目,一般一个web应用会同时链接多个数据源,不知道大家是如何配置的?不知道如下做法有没有什么不好的地方。
一、首先配置hibernate数据源:
<?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>
<!--1、Oracle 数据源配置-->
<bean id="oraclesessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>WEB-INF/classes/oracle-h.cfg.xml</value>
</property>
</bean>
<bean id="oracletransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sessionFactory" />
</property>
</bean>
<!--2、SQLServer 数据源配置-->
<bean id="sqlServersessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>WEB-INF/classes/sqlserver-h.cfg.xml</value>
</property>
</bean>
<bean id="sqlServerTransactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory">
<ref local="sqlServersessionFactory" />
</property>
</bean>
<!--3、其他数据源配置-->
.................
2、配置spring的事务拦截器(AOP):
<!--1、oracle数据源 事务管理拦截器-->
<tx:advice id="oracleTxAdvice" transaction-manager="oracletransactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="get*" read-only="true"/> <tx:method name="notx*" propagation="NEVER"/>
<tx:method name="*" rollback-for="自定义Exception"/>
</tx:attributes>
</tx:advice>
<!--2、sqlserver数据源 事务管理拦截器-->
<tx:advice id="sqlserverTxAdvice" transaction-manager="sqlservertransactionManager">
<tx:attributes>
<tx:method name="find*" read-only="true"/>
<tx:method name="get*" read-only="true"/> <tx:method name="notx*" propagation="NEVER"/>
<tx:method name="*" rollback-for="自定义Exception"/>
</tx:attributes>
</tx:advice>
<!--3、其他数据源 事务管理拦截器-->
.................
<!--配置多数据源的事务拦截器-->
<bean id="serviceAutoProxyCreator" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
<property name="beanNames">
<list>
<value>*Service</value>
</list>
</property>
<property name="interceptorNames">
<list>
<value>oracleTxAdvice</value>
<value>sqlServerTxAdvice</value>
<value>XXXXXTxAdvice</value>
</list>
</property>
</bean>
这样就可以配置多个数据源了。
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则







评论排行榜