ある時点でこれをプログラムで実行しました。つまり、異なるデータ ソースを持つ 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 では不可能なのでしょうか?