Spring &独自のシステムデータベースへの挿入/更新を持つHibernateアプリケーションで、異なるデータベースタイプの他のシステムを挿入/更新する必要があります。複数のデータベースのトランザクション管理SpringとHibernateの使用
異なるデータベースを使用している間、Hibernateでトランザクション管理を達成するにはどうすればよいですか。
Spring &独自のシステムデータベースへの挿入/更新を持つHibernateアプリケーションで、異なるデータベースタイプの他のシステムを挿入/更新する必要があります。複数のデータベースのトランザクション管理SpringとHibernateの使用
異なるデータベースを使用している間、Hibernateでトランザクション管理を達成するにはどうすればよいですか。
-Bharat
これは、アプリケーションの実行(例えば、JBossのアプリケーションサーバー)コンテナで実行する必要がありますか、などBitronixのようないくつかの他のトランザクションマネージャにフックする必要があります。 JavaSEアプリケーションのすぐに使えるだけで、複数のデータソース間でトランザクションを管理する際に「ベストエフォート」の試みが行われます。
XAドライバを使用して両方のデータベースへの接続を定義し、トランザクションマネージャが2フェーズコミットを利用していることを確認する必要があります。
あなたがグローバル・トランザクションに精通していない場合は、ここで起動します。http://docs.spring.io/autorepo/docs/spring/4.2.x/spring-framework-reference/html/transaction.html#transaction-global
を次の2人の別々のTXNの管理者を指定することができます。あなたのセットアップを使用すると、TXNマネージャ指定するqualigierを使用することができます完了すると
<bean id="transactionManager1"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory1" />
<qualifier value="account"/>
</bean>
<bean id="transactionManager2"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory2" />
<qualifier value="businessData"/>
</bean>
:あなたは複数のデータソースを含む取引を探していると仮定すると、
を、私は非常にあなたが記事のこのシリーズを与えるお勧めしますあなたのオプションのデビッド・Syer(スプリングリード)によって:
例えば、いくつかのデータベースでもDATにわたるトランザクションをサポート分散トランザクションのない特定の状況下でスキーマが優先されます(here参照)。
XA 2フェーズコミットトランザクションマネージャ以外のオプションもあります(オーバーヘッドと複雑さが大きくなります)が、トレードオフが異なります。
注:両方のデータベースに同時に関わるトランザクションがない場合は、Dineshの回答で十分です。 –
返信いただきありがとうございます。私の要件では、どんなサーバーにも行きたくないので、スタンドアロンアプリケーションを作りたいと思います。 – Bharat