Spring LocalContainerEntityManageFactoryBeanを使用しています。マルチテナント環境で異なるデータベースを接続する必要があるという問題があります。LocalcontainerEntityMangerFactory bean jpaプロパティを実行時の再起動なしの実行時実行時にSpring LocalContainerEntityManageFactoryBeanを変更して、Hibernateダイアレクトを変更します。
-1
A
答えて
0
代わりに、2つの異なるLocalContainerEntityManagerFactoryBean
インスタンスをそれぞれの適切な方言で初期化し、次にコードがどのデータベースと対話するかに基づいて正しいEntityManager
を参照するだけです。
@PersistenceContext(unitName = "dialect1PersistenceUnit")
private EntityManager entityManager1;
@PersistenceContext(unitName = "dialect2PersistenceUnit")
private EntityManager entityManager2;
本当に動的でなければならないものがいくつかあります。
一度に1つのデータソースで作業する場合は、データベースをAbstractRoutingDataSource
に基づいて設定し、使用する永続コンテキストを決定するスレッドローカル値を設定します。通常、トランザクション管理のアスペクトを呼び出す前に、サービス層ラッパーのスレッドローカル値を設定します。
別の方法としては、以下に示すように、EntityManagerFactory
ではなくEntityManager
を注入し、その場で自分自身EntityManager
を構築するために、次のようになります。
Map props = new HashMap();
props.put("org.hibernate.dialect", YourDialectClass.class.getName());
EntityManager entityManager = entityManagerFactory.createEntityManager(props);
HTH。
関連する問題
- 1. 実行時にHibernateバリデータのロケールを変更します
- 2. JMXを介して実行時にLogbackのHibernate SQLログレベルを変更する
- 3. 実行時にApplicationContextを使用してプログラムでSpring Beanを変更する
- 4. 実行時にCABasicAnimationのsetvalueを変更していますか?
- 5. 実行時にJava Spring Boot Beanを変更する
- 6. 実行時にSpringの@Scheduled fixedDelayを変更する方法
- 7. 実行時にSpringのコンフィグレーションを変更する
- 8. 実行時にデータベースを変更し、実行時に変更をDjangoに反映させる
- 9. EntityFrameworkを使用して実行時にデータベースタイプを変更する
- 10. 実行時にエレメントタイプを変更する
- 11. 実行時にテーマを変更する
- 12. 実行時にリピータインデックスを変更する
- 13. Install4j:実行時にランチャーをコピーして変更する方法
- 14. 実行時にリスナーのプロパティを変更します
- 15. 実行時にコントロールのトッププロパティを変更します。
- 16. 実行時にロケールをAngularで変更しますか?
- 17. 実行時にジェスチャーの色を変更します。
- 18. UWP - Google Analytics - 実行時にtrackingidを変更します。
- 19. 実行時に列挙型の値を変更しますか?
- 20. 実行時にXamDataGridの列の位置を変更します。
- 21. 実行時にテキストビューの書体を変更します
- 22. 実行時にUniformGridの子アイテムを変更します。
- 23. WPFスタイルを実行時に変更します
- 24. 実行時にブラウザ設定を変更しますか?
- 25. 実行時に折れ線グラフのドメインを変更します
- 26. 実行時にオブジェクトのプロパティを変更しますか?
- 27. 実行時にコントロールの親を変更します。VB.NET
- 28. ASP.NET Webフォームの実行時にBootstrap.cssテーマを変更します
- 29. 実行時にLog4J2出力ファイルを変更します
- 30. リアクションネイティブScrollView - 実行時にpagingEnabledを変更しますか?
私たちのアプリケーションがH2をデフォルトのデータソースとして指しているので、私たちはテナント(データベース)を動的に構成でき、Oracle、Mysql、MSSQlでもかまいません。実行時には方言を決定する必要があります – singh
私の答え。 – Naros
ありがとうナロス。エンティティマネージャを動的に作成するアプローチをとる必要があります。他のソリューションは機能しません。 – singh