0

mysql と oracle の 2 つの異なるデータベース用に routingdatasource を定義したい

次のconfig.xmlを定義しました

<bean id="dataSourceTarget" class="com.test.common.RoutingDataSource">
    <property name="targetDataSources">
        <map key-type="com.test.common.DataSourceType">
            <entry key="MY_SQL" value-ref="mySqlDataSource"/>
            <entry key="ORACLE" value-ref="oracleDataSource"/>
        </map>
    </property>
    <property name="defaultTargetDataSource" ref="mySqlDataSource"/>
</bean>

<bean id="mySqlDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
      destroy-method="close">
    <property name="driverClass" value="${jdbc.driver.classname}" />
    <property name="jdbcUrl" value="${mysql.url}" />
    <property name="user" value="${mysql.username}" />
    <property name="password" value="${mysql.password}" />
</bean>

<bean id="oracleDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
      destroy-method="close">
    <property name="driverClass" value="oracle.jdbc.driver.OracleDriver" />
    <property name="jdbcUrl" value="${oracle.url}" />
    <property name="user" value="${oracle.user}" />
    <property name="password" value="${oracle.passw}" />
</bean>

これで、セッション ファクトリとトランザクション マネージャを定義できるようになりました

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.format_sql">true</prop>
            <prop key="hibernate.use_sql_comments">true</prop>
        </props>
    </property>
</bean>

しかし、これはうまくいきません。私は取得しています

Caused by: java.lang.UnsupportedOperationException: The user must supply a JDBC connection

さらに、セッションの方言を定義する必要があります。しかし、作業しているデータソースに応じてどのように定義できますか?

4

0 に答える 0