【问题标题】:How to configure multiple Hibernate DataSources?如何配置多个 Hibernate 数据源?
【发布时间】:2015-09-01 23:52:36
【问题描述】:

是否可以在 spring session factory 中配置多个数据源?

数据源 1 是

  java:/comp/env/jdbc/names;

数据源 2 是

  java:/comp/env/jdbc/address;

会话工厂适用于 DataSource 1。如何包含 DataSource2?

 <bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">


 <property name="packagesToScan">
   <list>
       <value>myApp.dao</value>
       <value>myApp.domain</value>
   </list>

</property>


<property name="hibernateProperties">
    <props>
        <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop>
        <prop key="hibernate.show_sql">true</prop>
        <prop key="hibernate.hbm2ddl.auto">update</prop>
        <prop key="hibernate.connection.driver_class">oracle.jdbc.OracleDriver</prop>
        <prop key="hibernate.connection.datasource">java:/comp/env/jdbc/names</prop>
        <prop key="hibernate.current_session_context_class">thread</prop>

        </props>


        </property>  
    </bean>

谢谢。你的信息很有帮助。我走了这条路。

解决方案 Hibernate configuring multiple datasources and multiple session factories

【问题讨论】:

标签: hibernate spring-mvc hibernate-mapping


【解决方案1】:

您可以使用 Spring AbstractRoutingDataSource 并提供一个实现以在运行时切换数据源。看看这个example

【讨论】:

    【解决方案2】:

    你可以这样做

    <bean id="parentDataSource"
         class="org.springframework.jdbc.datasource.DriverManagerDataSource"
         abstract="true">
    <property name="driverClassName" value="org.hsqldb.jdbcDriver"/>
    <property name="username" value="sa"/>
    </bean>
    
    <bean id="goldDataSource" parent="parentDataSource">
      <property name="url" value="jdbc:hsqldb:hsql://localhost:${db.port.gold}/blog"/>
    </bean>
    
    <bean id="silverDataSource" parent="parentDataSource">
    <property name="url" value="jdbc:hsqldb:hsql://localhost:${db.port.silver}/blog"/>
    </bean>
    
    <bean id="bronzeDataSource" parent="parentDataSource">
    <property name="url" value="jdbc:hsqldb:hsql://localhost:${db.port.bronze}/blog"/>
    </bean>
    
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="location" value="classpath:/blog/datasource/db.properties"/>
    </bean> 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 2015-09-08
      • 2012-10-15
      • 1970-01-01
      • 2013-06-14
      • 2019-03-14
      • 2018-04-08
      相关资源
      最近更新 更多