Ist es möglich, Spring Boot so zu konfigurieren, dass ein MultiTenantConnectionProvider verwendet wird, so dass jeder Client meines Systems eine Verbindung zu seiner eigenen privaten Datenbank herstellt?Spring Boot + Spring Daten mit mehreren Mandanten
Insbesondere Ich suche die eingebaute in Hibernate Unterstützung für Multi-Tenant zu verwenden:
Und dies ist ein Beispiel für die Art von Config ich nach bin, aber ich kann nicht herausfinden, wie diese Einrichtung in einer Frühlings-Boot zu verwenden:
Ich habe versucht, das Hinzufügen dieser Eigenschaften zu application.properties
:
spring.jpa.hibernate.multiTenancy=DATABASE
spring.jpa.hibernate.tenant_identifier_resolver=com.mystuff.MyCurrentTenantIdentifierResolver
spring.jpa.hibernate.multi_tenant_connection_provider=com.mystuff.MyMultiTenantConnectionProviderImplX
ich auch meine eigene Codierung oben habe versucht CurrentTenantIdentifierResolver
und MultiTenantConnectionProvider
und versucht, diese von meinem Haupt @Configuration Bohne dienen:
@Bean
public CurrentTenantIdentifierResolver currentTenantIdentifierResolver() {
return new CurrentTenantIdentifierResolver() {
public String resolveCurrentTenantIdentifier() {
// this is never called ...
}
public boolean validateExistingCurrentSessions() {
// this is never called ...
}
};
}
@Bean
public MultiTenantConnectionProvider multiTenantConnectionProvider() {
return new AbstractMultiTenantConnectionProvider() {
protected ConnectionProvider getAnyConnectionProvider() {
// this is never called ...
}
protected ConnectionProvider selectConnectionProvider(String s) {
// this is never called ...
}
};
}
Nichts davon scheint zu beeinflussen, so ist meine Frage, wie Spring-Boot/Spring-Daten wirklich erhalten werden, um diese Multi-Tenant-Klassen zu verwenden?
Danke für Ihre Hilfe!
Siehe meine Frage [hier] (https://stackoverflow.com/questions/44366221/hibernate-multenancy-with-spring-jpa).
Ich benutze eine 'LocalContainerEntityManagerFactoryBean' und es funktioniert.
Aber ich verstehe nicht den Unterschied zwischen diesem und '.yml'or'.properties'.
Ich stimme @MDeinum zu, in 'Yml' kontrolliert Hibernate den Lebenszyklus von' multiTenantConnectionProvider' und 'CurrentTenantIdentifierResolver'. Aber ich weiß nicht warum. – linghu