简体   繁体   English

如何在Spring中使用2个或更多数据库(xml配置)

[英]How to use 2 or more databases with spring (xml configuration)

I'm new in spring and trying to switch between 2 different DBs. 我是春季新手,正在尝试在2个不同的DB之间切换。 I've made these changes in spring configuration xml file: 我在spring配置xml文件中做了以下更改:

<bean id="placeholderConfig"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location" value="classpath:config/db-config.properties" />
    </bean>

    <!-- MS Sql DB -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${db.driver}" />
        <property name="url" value="${db.url}" />
        <property name="username" value="${db.username}" />
        <property name="password" value="${db.password}" />
    </bean>
    <!-- end -->

    <!-- MySql DB -->
    <bean id="dataSourceMySql"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${db.driver1}" />
        <property name="url" value="${db.url1}" />
        <property name="username" value="${db.username1}" />
        <property name="password" value="${db.password1}" />
    </bean>
    <!-- end -->

    <bean id="entityManagerFactory"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="packagesToScan" value="com.epam.model" />
        <property name="dataSource" ref="dataSource" />

        <property name="jpaProperties">
            <props>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.hbm2ddl.auto"></prop>
                <prop key="hibernate.dialect"> org.hibernate.dialect.SQLServerDialect</prop>
            </props>
        </property>

        <property name="persistenceProvider">
            <bean class="org.hibernate.jpa.HibernatePersistenceProvider" />
        </property>

        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
    </bean>



    <bean id="entityManagerFactoryMySql"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="packagesToScan" value="com.epam.model" />
        <property name="dataSource" ref="dataSourceMySql" />

        <property name="jpaProperties">
            <props>
                <prop key="hibernate.show_sql">false</prop>
                <prop key="hibernate.hbm2ddl.auto"></prop>
                <prop key="hibernate.dialect"> org.hibernate.dialect.MySQLDialect</prop>
            </props>
        </property>

        <property name="persistenceProvider">
            <bean class="org.hibernate.jpa.HibernatePersistenceProvider" />
        </property>

        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
    </bean>



    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>

    <bean id="transactionManagerMySql" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactoryMySql" />
    </bean>

    <tx:annotation-driven transaction-manager="transactionManager" />
    <tx:annotation-driven transaction-manager="transactionManagerMySql" />

    <jpa:repositories base-package="com.epam.repository" />

</beans>

what I need to add in repository or service to specify which db I want to work. 我需要在存储库或服务中添加什么来指定我要工作的数据库。

您可以使用@Resource批注加载第二个数据源

Thanks for responce. 感谢您的回复。 I'm just added 2nd db specific key/values in properties file and depending on the db type, just uncommented appropriate ones. 我只是在属性文件中添加了第二个特定于数据库的键/值,并且取决于数据库类型,只是未注释的适当键/值。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM