4

ある時点でこれをプログラムで実行しました。つまり、異なるデータ ソースを持つ 2 つのエンティティ マネージャーを作成し、それらを異なるサービスに提供していました。

しかし今、Spring を使用して webApp を構築しています。問題は、別々のデータベースを担当する 2 つのエンティティ マネージャーが必要だということです。したがって、私の場合、DAO の半分は emNumber1 を使用し、後半はemNumber2を使用します。DB1からデータを読み取って処理し、このデータをDB2のまったく異なるエンティティに保存するだけでよいため、まったく異なる永続ユニットです。

私はこの問題が今も昔も続いていることをよく知っていますが、さまざまな形や形をとっています.私の場合には当てはまりません。同じケースで、解決策や私の場合の適用方法を理解できなかったので、この独自のサイトから解決策をリンクすることで解決する場合は、冗長な質問で本当に申し訳ありません.

これが、単一のトランザクションマネージャーを構成するのに適している方法です

<tx:annotation-driven transaction-manager="transactionManager" />
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>

<bean id="dataSource"
      class="org.springframework.jdbc.datasource.DriverManagerDataSource"
      p:driverClassName="com.mysql.jdbc.Driver"
      p:url="jdbc:mysql://localhost:3306/db"
      p:username="dbuser"
      p:password="dbuser"/>

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="pu1"/>
    <property name="dataSource" ref="dataSource"/>
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
            <property name="showSql" value="true"/>
            <property name="generateDdl" value="true"/>
            <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/>
        </bean>
    </property>
</bean>

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

次に、私のDAO内:

public class SimpleDaoImpl implements SimpleDao {
@PersistenceContext
private EntityManager entityManager;

    /* methods that use entity manager for transactions and data detcing */
}

では、異なるデータ ソースを持つ 2 つのトランザクション マネージャーの場合、どのエンティティ マネージャーをどの DAO に注入するかをどのように指定するのでしょうか、それとも Spring では不可能なのでしょうか?

4

2 に答える 2