LocalSessionFactoryBuilder/Bean supports setMultiTenantConnectionProvider
Issue: SPR-14072
This commit is contained in:
parent
a1a06cd665
commit
5f6406430f
|
@ -29,6 +29,7 @@ import org.hibernate.boot.model.naming.PhysicalNamingStrategy;
|
||||||
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
|
import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
|
||||||
import org.hibernate.cfg.Configuration;
|
import org.hibernate.cfg.Configuration;
|
||||||
import org.hibernate.context.spi.CurrentTenantIdentifierResolver;
|
import org.hibernate.context.spi.CurrentTenantIdentifierResolver;
|
||||||
|
import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider;
|
||||||
|
|
||||||
import org.springframework.beans.factory.DisposableBean;
|
import org.springframework.beans.factory.DisposableBean;
|
||||||
import org.springframework.beans.factory.FactoryBean;
|
import org.springframework.beans.factory.FactoryBean;
|
||||||
|
@ -85,6 +86,8 @@ public class LocalSessionFactoryBean extends HibernateExceptionTranslator
|
||||||
|
|
||||||
private Object jtaTransactionManager;
|
private Object jtaTransactionManager;
|
||||||
|
|
||||||
|
private MultiTenantConnectionProvider multiTenantConnectionProvider;
|
||||||
|
|
||||||
private CurrentTenantIdentifierResolver currentTenantIdentifierResolver;
|
private CurrentTenantIdentifierResolver currentTenantIdentifierResolver;
|
||||||
|
|
||||||
private TypeFilter[] entityTypeFilters;
|
private TypeFilter[] entityTypeFilters;
|
||||||
|
@ -238,6 +241,15 @@ public class LocalSessionFactoryBean extends HibernateExceptionTranslator
|
||||||
this.jtaTransactionManager = jtaTransactionManager;
|
this.jtaTransactionManager = jtaTransactionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a {@link MultiTenantConnectionProvider} to be passed on to the SessionFactory.
|
||||||
|
* @since 4.3
|
||||||
|
* @see LocalSessionFactoryBuilder#setMultiTenantConnectionProvider
|
||||||
|
*/
|
||||||
|
public void setMultiTenantConnectionProvider(MultiTenantConnectionProvider multiTenantConnectionProvider) {
|
||||||
|
this.multiTenantConnectionProvider = multiTenantConnectionProvider;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set a {@link CurrentTenantIdentifierResolver} to be passed on to the SessionFactory.
|
* Set a {@link CurrentTenantIdentifierResolver} to be passed on to the SessionFactory.
|
||||||
* @see LocalSessionFactoryBuilder#setCurrentTenantIdentifierResolver
|
* @see LocalSessionFactoryBuilder#setCurrentTenantIdentifierResolver
|
||||||
|
@ -251,7 +263,6 @@ public class LocalSessionFactoryBean extends HibernateExceptionTranslator
|
||||||
* <p>Default is to search all specified packages for classes annotated with
|
* <p>Default is to search all specified packages for classes annotated with
|
||||||
* {@code @javax.persistence.Entity}, {@code @javax.persistence.Embeddable}
|
* {@code @javax.persistence.Entity}, {@code @javax.persistence.Embeddable}
|
||||||
* or {@code @javax.persistence.MappedSuperclass}.
|
* or {@code @javax.persistence.MappedSuperclass}.
|
||||||
* @since 4.2
|
|
||||||
* @see #setPackagesToScan
|
* @see #setPackagesToScan
|
||||||
*/
|
*/
|
||||||
public void setEntityTypeFilters(TypeFilter... entityTypeFilters) {
|
public void setEntityTypeFilters(TypeFilter... entityTypeFilters) {
|
||||||
|
@ -444,6 +455,10 @@ public class LocalSessionFactoryBean extends HibernateExceptionTranslator
|
||||||
sfb.setJtaTransactionManager(this.jtaTransactionManager);
|
sfb.setJtaTransactionManager(this.jtaTransactionManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.multiTenantConnectionProvider != null) {
|
||||||
|
sfb.setMultiTenantConnectionProvider(this.multiTenantConnectionProvider);
|
||||||
|
}
|
||||||
|
|
||||||
if (this.currentTenantIdentifierResolver != null) {
|
if (this.currentTenantIdentifierResolver != null) {
|
||||||
sfb.setCurrentTenantIdentifierResolver(this.currentTenantIdentifierResolver);
|
sfb.setCurrentTenantIdentifierResolver(this.currentTenantIdentifierResolver);
|
||||||
}
|
}
|
||||||
|
|
|
@ -43,6 +43,7 @@ import org.hibernate.boot.registry.BootstrapServiceRegistryBuilder;
|
||||||
import org.hibernate.cfg.AvailableSettings;
|
import org.hibernate.cfg.AvailableSettings;
|
||||||
import org.hibernate.cfg.Configuration;
|
import org.hibernate.cfg.Configuration;
|
||||||
import org.hibernate.cfg.Environment;
|
import org.hibernate.cfg.Environment;
|
||||||
|
import org.hibernate.engine.jdbc.connections.spi.MultiTenantConnectionProvider;
|
||||||
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||||
|
|
||||||
import org.springframework.core.io.Resource;
|
import org.springframework.core.io.Resource;
|
||||||
|
@ -183,12 +184,21 @@ public class LocalSessionFactoryBuilder extends Configuration {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set a {@link MultiTenantConnectionProvider} to be passed on to the SessionFactory.
|
||||||
|
* @since 4.3
|
||||||
|
* @see AvailableSettings#MULTI_TENANT_CONNECTION_PROVIDER
|
||||||
|
*/
|
||||||
|
public LocalSessionFactoryBuilder setMultiTenantConnectionProvider(MultiTenantConnectionProvider multiTenantConnectionProvider) {
|
||||||
|
getProperties().put(AvailableSettings.MULTI_TENANT_CONNECTION_PROVIDER, multiTenantConnectionProvider);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Specify custom type filters for Spring-based scanning for entity classes.
|
* Specify custom type filters for Spring-based scanning for entity classes.
|
||||||
* <p>Default is to search all specified packages for classes annotated with
|
* <p>Default is to search all specified packages for classes annotated with
|
||||||
* {@code @javax.persistence.Entity}, {@code @javax.persistence.Embeddable}
|
* {@code @javax.persistence.Entity}, {@code @javax.persistence.Embeddable}
|
||||||
* or {@code @javax.persistence.MappedSuperclass}.
|
* or {@code @javax.persistence.MappedSuperclass}.
|
||||||
* @since 4.2
|
|
||||||
* @see #scanPackages
|
* @see #scanPackages
|
||||||
*/
|
*/
|
||||||
public LocalSessionFactoryBuilder setEntityTypeFilters(TypeFilter... entityTypeFilters) {
|
public LocalSessionFactoryBuilder setEntityTypeFilters(TypeFilter... entityTypeFilters) {
|
||||||
|
|
Loading…
Reference in New Issue