0

JPA を使用して 2 つのデータ ソースにレコードを挿入する必要があります。

この問題に対する正しいアプローチは何ですか?

最初のデータソースのジェネリック dao でユニット名を言及せずに、別の dao でユニット名を使用してコンテキストをオーバーライドせずに、異なるデータ ソースで異なる永続化ユニットを宣言し、2 つのエンティティ マネージャーを管理し、デフォルトのユニット名にデフォルトの永続化コンテキストを挿入するにはどうすればよいですか? 2 番目のデータソースの他のテーブルの場合。

春のドキュメントは非常に限られており、例はありません。

例は非常に役立ちます。

4

2 に答える 2

0

このチュートリアル ( http://javacodegeeks.blogspot.com/2010/05/jboss-42x-spring-3-jpa-hibernate.html ) に従うと、次の変更を加えて 2 つの異なるデータベースにアクセスできます。

persistence.xml で、2 番目のデータベースの 2 番目の永続ユニットを定義します。spring.xml で、別の名前で 2 番目の entityManagerFactory Bean を定義し、「entityManagerFactoryDB2」と言って、2 番目のデータベースに永続ユニットを使用するように構成します。2 番目のデータベースにアクセスするすべての DAO には、次のものが含まれます。

@Autowired
private EntityManagerFactory entityManagerFactoryDB2;


@PostConstruct
public void init() {
    super.setEntityManagerFactory(entityManagerFactoryDB2);
}

それで全部です!

春のサービスクラスでは、通常どおり DAO を使用してください。

于 2012-10-04T16:42:38.090 に答える
0

使用する

<bean class="..." primary="true" />

または@Primary注釈を使用している場合。

これは、1 つのインスタンスが、複数の異なるインスタンス (EntityManagerFactory など) を定義するタイプの「デフォルト」インスタンスであることを示します。

于 2012-10-04T13:00:09.367 に答える