Spring + Hibernate + java:运行应用程序后连接到多个数据库

时间:2016-03-10 14:36:54

标签: java spring hibernate jdbctemplate

如果应用程序正在运行并连接到Database-1。通过应用程序我想将某个数据库中的某些数据(可以是任何其他数据库的数据库1)复制到另一个数据库。可以有3-4个数据库。并且架构对于所有数据库完全相同。 是否可以这样做? 我读过" AbstractRoutingDataSource " here。但是我不想在运行时连接到数据库。它应该在运行之后。

我的spring-config.xml包含JdbcTemplate

的bean
<bean id="EnvJdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource">
        <ref bean="envDataSource" />
    </property>
</bean>

我为envDataSource(数据库1)创建了bean

<bean id="envDataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"/>              
    <property name="url"/>
    <property name="username"/>
    <property name="password"/>
</bean>

2 个答案:

答案 0 :(得分:1)

似乎你只需要创建更多的bean,并在需要的地方注入它们,并在需要时调用它们。这不是那么聪明,但你不需要过度设计这个。

<bean id="envDataSource1" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"/>              
    <property name="url"/>
    <property name="username"/>
    <property name="password"/>
</bean>

<bean id="envDataSource2" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName"/>              
    <property name="url"/>
    <property name="username"/>
    <property name="password"/>
</bean>

<bean id="EnvJdbcTemplate1" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource">
        <ref bean="envDataSource1" />
    </property>
</bean>


<bean id="EnvJdbcTemplate2" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource">
        <ref bean="envDataSource2" />
    </property>
</bean>

答案 1 :(得分:0)

Hibernate中有一个内置功能来支持多个模式/数据库。找到它here