具有不同数据库的抽象路由数据源

时间:2018-08-28 16:02:23

标签: java spring spring-orm

我们有一个应用程序,在其中实现了抽象路由数据源功能来处理多个相同类型的mysql数据库(jdbc:mysql://127.0.0.1:3306 / test,jdbc:mysql://127.0.0.1: 3306 / test2)。

现在,我们要使用另一个数据库DB2。因此,我无法使用抽象路由数据源为该场景找到任何样本。

任何人都可以给出指示吗?

这是我的代码块:

我在dao.xml中定义了3个数据源itemDataSource,custDataSource,orderDb2DataSource。

如何为事务管理器配置第二个会话工厂?

<bean id="dataSource" class="com.test.DatabaseRoutingDataSource">
        <property name="targetDataSources">
            <map key-type="com.test.dao.DatabaseType">
                <entry key="ITEM" value-ref="itemDataSource"/>
                <entry key="CUSTOMER" value-ref="custDataSource"/>
                <entry key="ORDER_DB2" value-ref="orderDb2DataSource"/>
            </map>
        </property>
        <property name="defaultTargetDataSource" ref="itemDataSource" />
    </bean>


    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="configLocation">
            <value>/WEB-INF/hibernate.cfg.xml</value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySqlDialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>
    <!-- Added for DB2 Database -->
    <bean id="sessionFactoryDB2" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
        <property name="configLocation">
            <value>/WEB-INF/hibernate.db2.cfg.xml</value>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
            </props>
        </property>
    </bean>
    <!-- Added for DB2 Database -->

    <bean id="transactionManager1"
         class="org.springframework.orm.hibernate4.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"/>
    </bean>

0 个答案:

没有答案