想使用spring+Hibernate框架,连接多个数据库。网上有一些资料算是比较成熟的解决方案,大概是实现抽象类AbstractRoutingDataSource,将多个数据库的连接写成bean;sessionFactory使用 自己实现的类。具体的配置文件如下:
<beans>
<bean id="master"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="jdbcUrl">
<value>jdbc:mysql://192.168.18.143:3306/wenhq?useUnicode=true&characterEncoding=utf-8</value>
</property>
<property name="user">
<value>root</value>
</property>
<property name="password">
<value></value>
</property>
</bean>
<bean id="slave"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="jdbcUrl">
<value>jdbc:mysql://192.168.18.144:3306/ wenhq?useUnicode=true&characterEncoding=utf-8</value>
</property>
<property name="user">
<value>root</value>
</property>
<property name="password">
<value></value>
</property>
</bean>
<bean id="mySqlDataSource" class="com.lvye.base.dao.impl.jdbc.DynamicDataSource">
<property name="targetDataSources">
<map>
<entry key="slave" value-ref="slave"/>
</map>
</property>
<property name="defaultTargetDataSource" ref="master"/>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" scope="singleton">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="javax.persistence.validation.mode">none</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.max_fetch_depth"> 2 </prop>
<prop key="hibernate.bytecode.use_reflection_optimizer"> true </prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/ietm/domain/TUser.hbm.xml</value>
<value>com/ietm/domain/TLoginLog.hbm.xml</value>
<!-- <value>com/ietmOracle/domain/TUser.hbm.xml</value> -->
</list>
</property></bean>,经过测试是没有问题的。但是现在是想动态的连接不同的数据库,所以。那个targetDataSources属性,想后面在程序中赋值。但是经过测试发现是不行的。不知道为什么,望各位高手解答。
这样不行之后,又想着直接在hibernate中,通过配置,构建不同sessionFactory中时,给予不同的配置赋值。已连接不同的数据库。但是还是不行。 请各位高手解答呀springhibernate数据库
<beans>
<bean id="master"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="jdbcUrl">
<value>jdbc:mysql://192.168.18.143:3306/wenhq?useUnicode=true&characterEncoding=utf-8</value>
</property>
<property name="user">
<value>root</value>
</property>
<property name="password">
<value></value>
</property>
</bean>
<bean id="slave"
class="com.mchange.v2.c3p0.ComboPooledDataSource"
destroy-method="close">
<property name="driverClass">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="jdbcUrl">
<value>jdbc:mysql://192.168.18.144:3306/ wenhq?useUnicode=true&characterEncoding=utf-8</value>
</property>
<property name="user">
<value>root</value>
</property>
<property name="password">
<value></value>
</property>
</bean>
<bean id="mySqlDataSource" class="com.lvye.base.dao.impl.jdbc.DynamicDataSource">
<property name="targetDataSources">
<map>
<entry key="slave" value-ref="slave"/>
</map>
</property>
<property name="defaultTargetDataSource" ref="master"/>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" scope="singleton">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="javax.persistence.validation.mode">none</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.max_fetch_depth"> 2 </prop>
<prop key="hibernate.bytecode.use_reflection_optimizer"> true </prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/ietm/domain/TUser.hbm.xml</value>
<value>com/ietm/domain/TLoginLog.hbm.xml</value>
<!-- <value>com/ietmOracle/domain/TUser.hbm.xml</value> -->
</list>
</property></bean>,经过测试是没有问题的。但是现在是想动态的连接不同的数据库,所以。那个targetDataSources属性,想后面在程序中赋值。但是经过测试发现是不行的。不知道为什么,望各位高手解答。
这样不行之后,又想着直接在hibernate中,通过配置,构建不同sessionFactory中时,给予不同的配置赋值。已连接不同的数据库。但是还是不行。 请各位高手解答呀springhibernate数据库
解决方案 »
- 为何在Ctrl+Shift+F格式化jsp文本时出错
- float 型 1.58045517E9 转换成 1580455200
- 关于linkedList百思不得其解的问题,看那个高手能道出个原因出来
- spring 入门代码调试总是出错
- Problem loading properties for com.jbsoft.action.PointAction
- 求一正则表达式 *.txt 在线等
- spring不是很熟悉,最近想研究spring3.0的源代码,大家来发表点建议。
- 各位大侠哪位用过javaparty的?配置有问题高分请教!
- 学习WEB SERVICES
- 求救:j2ee的构架下,可以作为一个客户端不断的往一用vc做的应用程序客户端发数据吗?
- Tomcat无法加载struts.xml
- 如何编译chm格式的文档
通过jndi注入不同的数据源,实现得到不同的sessionfactory
<jee:jndi-lookup id="DB-ID" jndi-name="DB-Name"/>
try it
@Value("#{mySqlDataSource.targetDataSources}")
public void setTargetDataSources(String source) { ... }
数据源也要动态?,数据源不确定?,
你可以参照jboss数据源配置,