最近、Springの複数のデータソースを構成する方法についてコンサルティングを行っている人がたくさんいます。1つずつ回答することは面倒です。以前のブログ投稿の構成も問題があるため、すべての人にデモをリリースします。
デモには2つのデータソース、つまりMySQLとOracleがあり、簡単なテストが実施されています。データソースを動的に切り替えることに問題はありません。このデモがみんなを助けることができることを願っています。
デモのダウンロードアドレス:
スプリングは動的にマルチデータソースデモを切り替えます:http://xiazai.vevb.com/201701/yuanma/dynamicdatasourcedemo_jb51.rar
また、マルチデータソースを構成する際に重要なポイントを説明するためのいくつかの説明をします。
1.トランザクションインターセプターの構成に注意してください
これが最優先事項です。まず、Springのトランザクション管理がデータソースに拘束されていることを理解する必要があります。プログラムがトランザクション管理レイヤー(サービスなど)に実行されると、このレイヤーを入力する前にインターセプターを通じてトランザクションが開かれているため、このレイヤーでデータソースを切り替えることはできません。トランザクションの原則を理解することが特に重要です。私の前の記事では、DAOレイヤーのデータソースを切り替えるようにインターセプターを構成することは問題があります(例であるため、私はすべての人を誤解させたことを不注意で謝罪します)が、提供されたアイデアは問題ではありません。
デモでは、データソースをスイッチするDataSourceInterceptorは、トランザクションインターセプター(TXADVICE)の前のレイヤー、つまりコントローラーレイヤーで構成されています。
2。データベーステーブルの作成に注意してください
一部の人々は、Hibernateの自動テーブル作成機能を使用するのが好きですが、複数のデータソース、特に異なるデータベースの複数のデータソースでは、テーブルを自動的に作成することはできないことに注意する必要があります。 Hibernate Automatic Tableの作成はプロジェクトの起動時にトリガーされるため、プロジェクトによって構成されたデフォルトのデータソースのテーブルのみが作成され、他のデータソースのテーブルは自動的に作成されません。誰もが注意を払うべきです。
3. Hibernateのデータベース方言は無視できます
複数のデータソースの場合、方言設定は無視できます。 Hibernateは、使用すると異なるデータベースを自動的に認識するため、この構成について心配する必要はなく、構成しないことさえ可能です。
4.現在のセッションエラーを報告しません
これは、sessionfactory.getCurrentssession()を使用することによって引き起こされます。現在のセッションはスレッドにバインドされています。スレッドは1つのセッションのみを開きます(opensession()を使用しない限りエラーはありません)。したがって、セッションとスレッドの間の結合関係を設定する必要があります。
デモはSpringを使用してHibernateセッションを管理するため、OpenSessionInviewFilterはweb.xmlで構成され、current_session_context_classはhibernate.cfg.xmlで構成されています。 [PS:Springを使用してHibernateを管理する場合、hibernate.cfg.xmlを削除でき、構成されたすべてのSpringの構成ファイルはHibernatePropertiesです。個人的な好みに依存する]
最後に、一部のフレームワークはデモに統合されているだけで、誰もが使用するのに便利です。それは誰にとっても利益です。ここでこれらのフレームワークの構成とテクノロジーについては説明しません。知りたい場合は、アドレスを確認できます。
Spring Multi-Dataソース構成://www.vevb.com/article/102282.htm
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。