In letzter Zeit haben viele Leute gefragt, wie man im Frühjahr mehrere Datenquellen konfiguriert, und es ist schwierig, sie einzeln zu beantworten. Darüber hinaus gab es in früheren Blog-Beiträgen auch Probleme mit der Konfiguration, daher veröffentliche ich eine erneut Demo für alle.
Die Demo enthält zwei Datenquellen, nämlich MySQL und Oracle. Es gibt kein Problem beim dynamischen Wechseln der Datenquellen.
Darüber hinaus werde ich einige Anweisungen geben, um die wichtigsten Punkte bei der Konfiguration mehrerer Datenquellen zu erläutern:
1. Achten Sie auf die Konfiguration des Transaktions-Interceptors
Das ist in erster Linie. Zunächst müssen Sie verstehen, dass die Transaktionsverwaltung von Spring an die Datenquelle gebunden ist, sobald das Programm an die Transaktionsverwaltungsschicht (z. B. einen Dienst) ausgeführt wird, da die Transaktion über den Interceptor geöffnet wurde, bevor sie in diese Schicht eintritt In dieser Schicht ist es nicht möglich, die Datenquellen zu wechseln. In meinem vorherigen Artikel gab es ein Problem mit der Konfiguration des Interceptors für den Wechsel der Datenquellen in der Dao-Schicht (da es sich um ein Beispiel handelte). Ich war also nachlässig und habe mich in die Irre geführt (ich entschuldige mich bei allen), aber die bereitgestellten Ideen sind nicht problematisch.
In der Demo ist der Interceptor zum Wechseln von Datenquellen (dataSourceInterceptor) auf der oberen Ebene des Transaktions-Interceptors (txadvice) konfiguriert, der Controller-Ebene.
2. Achten Sie auf die Erstellung von Datenbanktabellen
Manche Leute nutzen gerne die Funktion des Ruhezustands zum automatischen Erstellen von Tabellen, es muss jedoch beachtet werden, dass dies bei mehreren Daten der Fall ist Quellen, insbesondere unterschiedliche Es ist unmöglich, automatisch Tabellen für alle verschiedenen Datenquellen in der Datenbank zu erstellen. Da die automatische Tabellenerstellung von Hibernate beim Start des Projekts ausgelöst wird, werden nur die Tabellen der im Projekt konfigurierten Standarddatenquelle erstellt und Tabellen aus anderen Datenquellen werden nicht automatisch erstellt. Jeder sollte aufpassen.
3. Der Datenbankdialekt (Dialekt) von Hibernate kann ignoriert werden
Bei Verwendung mehrerer Datenquellen kann die Dialekteinstellung ignoriert werden und Hibernate erkennt automatisch verschiedene, wenn Verwenden Sie diese Datenbank, sodass Sie sich um diese Konfiguration keine Gedanken machen oder sie gar nicht konfigurieren müssen.
4. Kein aktueller Sitzungsfehler melden
Dies wird durch die Verwendung von sessionFactory.getCurrentSession() verursacht. Die aktuelle Sitzung ist nur an einen Thread gebunden wird geöffnet (es wird kein Fehler gemeldet, es sei denn, openSession() wird verwendet), daher muss die Bindungsbeziehung zwischen der Sitzung und dem Thread festgelegt werden.
Spring wird zum Verwalten von Hibernate-Sitzungen in der Demo verwendet, daher ist OpenSessionInViewFilter in web.xml und current_session_context_class in hibernate.cfg.xml konfiguriert. [PS: Wenn Sie Spring zum Verwalten von Hibernate verwenden, können Sie hibernate.cfg.xml entfernen. Alle Konfigurationen befinden sich in der Spring-Konfigurationsdatei, dh hibernateProperties. Das hängt von den persönlichen Vorlieben ab.】
Schließlich integriert die Demo einfach einige Frameworks, die jeder nutzen kann, was für alle von Vorteil ist. Die Konfiguration und Technologie dieser Frameworks wird hier nicht näher erläutert.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er zum Lernen aller beiträgt. Ich hoffe auch, dass jeder die PHP-Chinesisch-Website unterstützt.
Weitere Artikel zur dynamischen Konfiguration mehrerer Datenquellen in Spring finden Sie auf der chinesischen PHP-Website!