2016-03-10 50 views
1

如果應用程序正在運行並連接到Database-1。通過應用我想從一個數據庫(它可以是任何其他數據庫-1)的某些數據複製到另一個數據庫。可以有3-4個數據庫。 架構對於所有數據庫完全相同。 是否可以這樣做? 我已閱讀「AbstractRoutingDataSourcehere。但我不想在運行時連接到數據庫。它應該在運行後。Spring + Hibernate + java:運行應用程序後連接到多個數據庫

spring-config.xml包含JdbcTemplate

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

我已經創建的bean的envDataSource豆(數據庫1)

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

你的意思是讀取複製? –

+0

沒有。我的數據庫中有多個實體。所以我想通過我的應用程序將某個實體從一個數據庫複製到另一個數據庫。而數據庫可以不是我的連接數據庫。 – ps007

+0

當你說副本時,你的意思是實時嗎?當實體被創建,更新等,你需要的實體被寫入第二個數據庫? –

回答

1

好像你只需要創造更多的豆子,並根據需要將它們注入,並在需要時給他們打電話。這不是那麼聰明,但你不需要過度設計這個。

<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> 
+0

是的,我知道它會以這種方式工作。我只能使用一個模板。我想我會嘗試使用地圖並實時傳遞值。它沒有工作。 – ps007

+0

你只能使用一個模板,因爲??? –

+0

我想過爲diff DB使用多個bean,然後在運行時傳遞它們的ref。這樣我就可以每次使用一個模板。 – ps007

0

在Hibernate中有一個內置功能來支持多個模式/數據庫。找到它here

相關問題