Ich arbeite an einer Spring-Boot-Multi-Tenancy-Anwendung. Ich habe mehrere Datenquellen wie folgt konfiguriert:
application.properties
%Vor%DataSourceBasedMultiTenantConnectionProviderImpl.java
%Vor%MultitenancyProperties.java
%Vor%MultiTenancyJpaConfiguration.java
%Vor%Anwendungsstarter
%Vor% Wenn ich die Boot-Anwendung ausführe, werden alle Tabellen nur in der ersten Datenquelle erstellt.
1) Wie kann ich beim Start der Anwendung Tabellen in allen Datenquellen erstellen?
2) Wie können Verbindungen für jede Datenquelle geöffnet / geschlossen werden?
3) Gibt es eine bessere Möglichkeit zur Konfiguration von Multi-Tenancy-Anwendungen mit Spring-Boot für bessere Leistung?
Wie @Alex sagte, benötigen Sie verschiedene EntityManager, TransactionManager und Datenquellen. Hier ist, wie ich es machen würde
%Vor% Sie können zwei andere Klassen wie diese erstellen. Denken Sie daran, @Primary
nur auf einer Instanz der Datenquelle, des Transaktionsmanagers und des Entity-Managers zu verwenden (egal welcher). Ein anderes Wort der Vorsicht, stellen Sie sicher, dass Repository-Klassen in verschiedenen Paketen für alle drei Datenbanken sind.
Sie benötigen zwei verschiedene Persistenzfabriken, nicht eine, jede sollte verschiedene EntityManager für verschiedene Datenquellen erzeugen. Außerdem sollte jede Entitätszuordnung so gekennzeichnet werden, dass sie nur mit einem Entitätsmanager verwendet wird. Siehe vollständige Lösung hier:
Tags und Links java spring-data-jpa hibernate spring spring-boot