Чтение из нескольких баз данных с одним и тем же блоком сохранения состояния?

Мне нужна помощь в настройке нескольких подключений к нескольким базам данных с использованием одного и того же блока Persistence.

Все они имеют одинаковую схему. Поэтому я хочу использовать одну и ту же единицу сохранения состояния / DAO и т. Д. И не хочу настраивать 10 EntityManager, 10 XML-файлов Persistence и т. Д. Есть ли способ сделать это? Вот моя текущая конфигурация:

  
 <свойства>
 
 
 
 
 
 
 
 
        <class>com.domain.TktOrder</class>
        <exclude-unlisted-classes/>
    </persistence-unit>

Я также использую Spring / hibernate для настройки моего контекста:

    <bean id="EntityManagerFactory"
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
    p:persistenceUnitName="PersistenceUnit-c1" 
    p:dataSource-ref="DataSource">
    <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
            p:showSql="${hibernate-show-sql}" 
            p:generateDdl="false" 
            p:databasePlatform="org.hibernate.dialect.SybaseDialect" />
    </property>
    <property name="loadTimeWeaver">
        <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
    </property>
</bean>

<bean id="DataSource" 
    class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" 
    p:driverClass="net.sourceforge.jtds.jdbc.Driver"
    p:jdbcUrl="jdbc:jtds:sybase://url.net:port;DatabaseName=db_1"
    p:user="user" 
    p:password="password"
    />

и, наконец, я использую:

@PersistenceContext(unitName="PersistenceUnit-c1")
public void setEntityManager(EntityManager entityManager)
{
    this.entityManager = entityManager;     

}

для внедрения моего EntityManager в мой DAO

Как я могу расширить эту модель, чтобы иметь возможность использовать db1, тогда изменить источник данных и снова выполнить для db2 и т. д.

Большое спасибо за любую помощь!

14
задан Michael W 9 December 2011 в 15:50
поделиться