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. 実行時にSpringの@Scheduled fixedDelayを変更する方法
- 6. 実行時にSpringのコンフィグレーションを変更する
- 7. 実行時にデータベースを変更し、実行時に変更をDjangoに反映させる
- 8. 実行時にエレメントタイプを変更する
- 9. 実行時にテーマを変更する
- 10. Install4j:実行時にランチャーをコピーして変更する方法
- 11. 実行時にジェスチャーの色を変更します。
- 12. 実行時にTomcatのプロパティファイルを変更します。
- 13. 実行時に列挙型の値を変更しますか?
- 14. リアクションネイティブScrollView - 実行時にpagingEnabledを変更しますか?
- 15. 実行時にオブジェクトのプロパティを変更しますか?
- 16. 実行時にリスナーのプロパティを変更します
- 17. 実行時にテキストビューの書体を変更します
- 18. WPFテンプレート/テーマ/ UI /コントロールを実行時に変更します。
- 19. ASP.NET Webフォームの実行時にBootstrap.cssテーマを変更します
- 20. 実行時にレイアウトの方向を変更します
- 21. 実行時にXamDataGridの列の位置を変更します。
- 22. 実行時にLog4J2出力ファイルを変更します
- 23. 実行時にコントロールのトッププロパティを変更します。
- 24. 実行時にコントロールの親を変更します。VB.NET
- 25. 注釈ベースのSpringリトライを使用して、実行時にインターセプタを動的に変更します
- 26. Jquery:バインドロード+変更を同時に実行
- 27. 実行時にstring.xmlを変更してください
- 28. 実行時にKendoPanelの色を変更してください
- 29. 実行時にHibernateテーブル名(@Table(name = "tableName"))を変更するには?
- 30. 実行時のアニメーションを変更する
私たちのアプリケーションがH2をデフォルトのデータソースとして指しているので、私たちはテナント(データベース)を動的に構成でき、Oracle、Mysql、MSSQlでもかまいません。実行時には方言を決定する必要があります – singh
私の答え。 – Naros
ありがとうナロス。エンティティマネージャを動的に作成するアプローチをとる必要があります。他のソリューションは機能しません。 – singh