首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

关于Spring+hibernate动态链接多个数据库解决办法

2013-03-26 
关于Spring+hibernate动态链接多个数据库 想使用spring+Hibernate框架,连接多个数据库。网上有一些资料算是

关于Spring+hibernate动态链接多个数据库
 想使用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&amp;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&amp;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中时,给予不同的配置赋值。已连接不同的数据库。但是还是不行。 请各位高手解答呀 spring hibernate 数据库
[解决办法]
每个库定义一个数据源,
通过jndi注入不同的数据源,实现得到不同的sessionfactory
[解决办法]
你把简单问题复杂化了。
<jee:jndi-lookup  id="DB-ID" jndi-name="DB-Name"/>

[解决办法]
引用:
引用:你把简单问题复杂化了。
Java code?1<jee:jndi-lookup  id="DB-ID" jndi-name="DB-Name"/>
楼上的朋友,第一个问题是为什么呢?


try it
@Value("#{mySqlDataSource.targetDataSources}")
public void setTargetDataSources(String source) { ... }

[解决办法]
引用:
引用:每个库定义一个数据源,
通过jndi注入不同的数据源,实现得到不同的sessionfactory
如果是在配置中写死的,那么肯定不能解决问题的!


数据源也要动态?,数据源不确定?,
你可以参照jboss数据源配置,

热点排行