In letzter Zeit gibt es viele Personen, die sich über die Konfiguration mehrerer Datenquellen für den Frühling beraten, und es ist problematisch, sie nacheinander zu beantworten, und die Konfiguration in früheren Blog -Posts ist ebenfalls problematisch, daher werde ich eine Demo für alle veröffentlichen.
Es gibt zwei Datenquellen in der Demo, nämlich MySQL und Oracle, und es wurden einfache Tests durchgeführt. Es gibt kein Problem beim dynamischen Schalten von Datenquellen. Ich hoffe, diese Demo kann allen helfen.
Demo -Download -Adresse:
Spring schaltet dynamisch Multi-Data-Quelle Demo: http://xiazai.vevb.com/201701/yuanma/dynamicdatasourcedemo_jb51.rar
Ich werde auch einige Erklärungen geben, um die Schlüsselpunkte bei der Konfiguration von Multi-Daten-Quelle zu erläutern:
1. Achten Sie auf die Konfiguration des Transaktions -Interceptors
Dies ist die erste Priorität. Zunächst müssen Sie verstehen, dass das Transaktionsmanagement von Spring an die Datenquelle gebunden ist. Sobald das Programm in die Transaktionsverwaltungsschicht (z. B. Service) ausgeführt wird, ist es nicht möglich, die Datenquelle in dieser Ebene zu wechseln, da die Transaktion vor dem Eingeben dieser Ebene vor dem Eintritt in diese Ebene geöffnet wurde. Es ist besonders wichtig, das Transaktionsprinzip zu verstehen. In meinem vorherigen Artikel ist es problematisch, den Interceptor zu konfigurieren, um die Datenquelle in der DAO -Ebene zu wechseln (da es sich um ein Beispiel handelt, ich bin nachlässig und entschuldige mich dafür, dass ich alle irregeführt habe), aber die bereitgestellten Ideen sind nicht problematisch.
In der Demo ist der DataSourceInterceptor, der Datenquellen wechselt, auf der vorherigen Ebene des Transaktions -Interceptor (TXADVICE) konfiguriert, dh in der Controller -Ebene.
2. Achten Sie auf die Erstellung von Datenbanktabellen
Einige Leute verwenden gerne die automatische Tabellenerstellungsfunktion von Hibernate, aber es ist zu beachten, dass es in mehreren Datenquellen, insbesondere in mehreren Datenquellen verschiedener Datenbanken, nicht automatisch Tabellen erstellen kann. Da beim Projektstart die automatische Erstellung der automatischen Tabelle aus dem Hibernate ausgelöst wird, werden nur Tabellen für die vom Projekt konfigurierte Standarddatenquelle erstellt, während Tabellen für andere Datenquellen nicht automatisch erstellt werden. Jeder sollte aufpassen.
3. Die Datenbankdialekt von Hibernate kann ignoriert werden
Bei mehreren Datenquellen können die Dialekteinstellungen ignoriert werden. Hibernate erkennt bei Verwendung automatisch verschiedene Datenbanken, sodass sich keine Sorgen um diese Konfiguration machen müssen, und es ist sogar möglich, sie nicht zu konfigurieren.
4. Melden Sie keinen aktuellen Sitzungsfehler
Dies wird durch die Verwendung von SessionFactory.getCurrentSession () verursacht. Die aktuelle Sitzung ist an den Thread gebunden. Ein Thread öffnet nur eine Sitzung (es gibt keinen Fehler, es sei denn, Sie verwenden OpenSession ()). Daher muss die Bindungsbeziehung zwischen der Sitzung und dem Thread festgelegt werden.
Die Demo verwaltet Spring, um die Hibernate -Sitzung zu verwalten, sodass OpenSessionInviewFilter in web.xml konfiguriert ist, und current_session_context_class ist in hibernate.cfg.xml konfiguriert. [PS: Wenn Sie Feder zum Verwalten von Hibernate verwenden, können Sie Hibernate.cfg.xml entfernen, und die Konfigurationsdateien aller konfigurierten Feder sind HibernateProperties. Von persönlichen Vorlieben abhängen]
Schließlich sind einige Frameworks einfach in die Demo integriert, die für alle bequem sind. Es ist ein Vorteil für alle. Ich werde die Konfiguration und Technologie dieser Frameworks hier nicht erklären. Wenn Sie wissen möchten, können Sie die Adresse überprüfen:
Spring Multi-Daten-Quellkonfiguration: //www.vevb.com/article/102282.htm
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.