ホームページ  >  記事  >  Java  >  Spring の動的複数データ ソース構成

Spring の動的複数データ ソース構成

高洛峰
高洛峰オリジナル
2017-01-24 10:38:081634ブラウズ

最近、春に複数のデータソースを設定する方法について質問されることが多く、それに一つずつ答えるのは面倒です。また、以前のブログ記事の設定にも問題があるため、デモを再リリースします。みんな。

このデモには MySQL と Oracle という 2 つのデータ ソースがあり、動的にデータ ソースを切り替えることに問題はありません。

さらに、複数のデータ ソースを構成する際の重要なポイントを説明する手順をいくつか示します。

1. トランザクション インターセプターの構成に注意してください

これが最初の構成です。まず、プログラムがトランザクション管理層 (サービスなど) に実行されると、トランザクションはこの層に入る前にインターセプターを通じて開かれるため、Spring のトランザクション管理はデータ ソースにバインドされることを理解する必要があります。この層 データ ソースを切り替えることはできません。前回の記事では、Dao 層でデータ ソースを切り替えるためのインターセプターの構成に問題がありました。不注意で誤解を招いてしまいましたことをお詫び申し上げます。)しかし、提供されたアイデアには問題はありません。

デモでは、データソースを切り替えるためのインターセプター(dataSourceInterceptor)は、コントローラー層であるトランザクションインターセプター(txadvice)の上位層に構成されています。

2. データベーステーブルの作成に注意してください

テーブルを自動的に作成する Hibernate の機能を使用することを好む人もいますが、複数のデータ ソース、特に異なるデータベース内の複数のデータ ソースでは使用できないことに注意してください。テーブルを自動的に作成する必要はありません。 Hibernate の自動テーブル作成はプロジェクトの開始時にトリガーされるため、プロジェクトに設定されているデフォルト データ ソースのテーブルのみが作成され、他のデータ ソースのテーブルは自動的に作成されません。誰もが注意を払う必要があります。

3. Hibernate のデータベースダイアレクトは無視できます

複数のデータソースがある場合、Hibernate は使用時に異なるデータベースを自動的に識別するため、この設定について心配する必要はありません。設定しないでください。

4. 現在のセッションがないというエラー

これは、現在のセッションがスレッドにバインドされているために発生します (openSession() が使用されていない場合)。エラーが報告されるため)、セッションとスレッド間のバインド関係を設​​定する必要があります。
Spring はデモで Hibernate セッションを管理するために使用されるため、OpenSessionInViewFilter は web.xml で構成され、current_session_context_class は hibernate.cfg.xml で構成されます。 [追記: Spring を使用して Hibernate を管理する場合、hibernate.cfg.xml を削除できます。これにより、すべての設定が Spring 設定ファイル (つまり、hibernateProperties) に含まれます。それは個人の好みによって異なります]

最後に、一部のフレームワークは誰でも使用できるようにデモに統合されていますが、これらのフレームワークの構成とテクノロジーについてはここでは詳しく説明しません。

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

Spring の動的マルチデータ ソース構成に関連するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。