spring3+hibernate3(jpa) 如何配置多个数据源?(bean的配置管理是基于注解)

我在一个工程中用的是oracle和mysql,以下配置,现在还没有碰到问题:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

       xmlns:tx="http://www.springframework.org/schema/tx"

       xmlns:context="http://www.springframework.org/schema/context"

       

       xsi:schemaLocation="http://www.springframework.org/schema/beans

           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd

           http://www.springframework.org/schema/tx 

           http://www.springframework.org/schema/tx/spring-tx-3.0.xsd

           http://www.springframework.org/schema/context 

   http://www.springframework.org/schema/context/spring-context-3.0.xsd ">

 

    <context:component-scan base-package="tss.vpdn.hdle"/>

 

    <bean id="dataSource2" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

        <property name="driverClass" value="oracle.jdbc.OracleDriver"/>

        <property name="jdbcUrl" value="jdbc:oracle:thin:@171.32.5.103:1521:ora10g"/>

        <property name="user" value="csnms"/>

        <property name="password" value="sbsbsb"/>

        <property name="initialPoolSize" value="1"/>

        <property name="minPoolSize" value="1"/>

        <property name="maxPoolSize" value="3"/>

        <property name="maxIdleTime" value="60"/>

        <property name="acquireIncrement" value="3"/>

        <property name="idleConnectionTestPeriod" value="60"/>

    </bean>

 

    <bean id="sessionFactory2" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

        <property name="dataSource" ref="dataSource2"/>

        <property name="packagesToScan" value="tss.vpdn.model"/>

        <property name="hibernateProperties">

            <value>

                hibernate.dialect=org.hibernate.dialect.Oracle10gDialect

                hibernate.hbm2ddl.auto=none

                hibernate.show_sql=true

                hibernate.format_sql=false

            </value>

        </property>

    </bean>

    

    <bean id="txManager2" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <property name="sessionFactory" ref="sessionFactory2"/>

    </bean>

    

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

 

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

        <property name="driverClass" value="com.mysql.jdbc.Driver"/>

        <property name="jdbcUrl" value="jdbc:mysql://112.231.65.133:3306/sdvpdn?useUnicode=true&amp;characterEncoding=UTF-8"/>

        <property name="user" value="root"/>

        <property name="password" value="sbsbsb"/>

        <property name="initialPoolSize" value="1"/>

        <property name="minPoolSize" value="1"/>

        <property name="maxPoolSize" value="30"/>

        <property name="maxIdleTime" value="60"/>

        <property name="acquireIncrement" value="3"/>

        <property name="idleConnectionTestPeriod" value="60"/>

    </bean>

 

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">

        <property name="dataSource" ref="dataSource"/>

        <property name="packagesToScan" value="tss.vpdn.model"/>

        <property name="hibernateProperties">

            <value>

                hibernate.dialect=org.hibernate.dialect.MySQLMyISAMDialect

                hibernate.hbm2ddl.auto=none

                hibernate.show_sql=true

                hibernate.format_sql=false

            </value>

        </property>

    </bean>

    

    <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">

        <property name="sessionFactory" ref="sessionFactory"/>

    </bean>

    

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

</beans>

注入的时候用 @Resource指定名称:

@Resource(name="sessionFactory2")

private SessionFactory factory;

@Transactional(value="txManager2")

相关推荐