Class AbstractMultiTenantConnectionProvider
- java.lang.Object
-
- org.hibernate.engine.jdbc.connections.spi.AbstractMultiTenantConnectionProvider
-
- All Implemented Interfaces:
java.io.Serializable,MultiTenantConnectionProvider,Service,Wrapped
public abstract class AbstractMultiTenantConnectionProvider extends java.lang.Object implements MultiTenantConnectionProvider
Basic support forMultiTenantConnectionProviderimplementations using individualConnectionProviderinstances per tenant behind the scenes.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description AbstractMultiTenantConnectionProvider()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description java.sql.ConnectiongetAnyConnection()Allows access to the database metadata of the underlying database(s) in situations where we do not have a tenant id (like startup processing, for example).protected abstract ConnectionProvidergetAnyConnectionProvider()java.sql.ConnectiongetConnection(java.lang.String tenantIdentifier)Obtains a connection for Hibernate use according to the underlying strategy of this provider.booleanisUnwrappableAs(java.lang.Class unwrapType)Can this wrapped service be unwrapped as the indicated type?voidreleaseAnyConnection(java.sql.Connection connection)Release a connection obtained fromMultiTenantConnectionProvider.getAnyConnection()voidreleaseConnection(java.lang.String tenantIdentifier, java.sql.Connection connection)Release a connection from Hibernate use.protected abstract ConnectionProviderselectConnectionProvider(java.lang.String tenantIdentifier)booleansupportsAggressiveRelease()Does this connection provider support aggressive release of JDBC connections and re-acquisition of those connections (if need be) later?<T> Tunwrap(java.lang.Class<T> unwrapType)Unproxy the service proxy
-
-
-
Method Detail
-
getAnyConnectionProvider
protected abstract ConnectionProvider getAnyConnectionProvider()
-
selectConnectionProvider
protected abstract ConnectionProvider selectConnectionProvider(java.lang.String tenantIdentifier)
-
getAnyConnection
public java.sql.Connection getAnyConnection() throws java.sql.SQLExceptionDescription copied from interface:MultiTenantConnectionProviderAllows access to the database metadata of the underlying database(s) in situations where we do not have a tenant id (like startup processing, for example).- Specified by:
getAnyConnectionin interfaceMultiTenantConnectionProvider- Returns:
- The database metadata.
- Throws:
java.sql.SQLException- Indicates a problem opening a connection
-
releaseAnyConnection
public void releaseAnyConnection(java.sql.Connection connection) throws java.sql.SQLExceptionDescription copied from interface:MultiTenantConnectionProviderRelease a connection obtained fromMultiTenantConnectionProvider.getAnyConnection()- Specified by:
releaseAnyConnectionin interfaceMultiTenantConnectionProvider- Parameters:
connection- The JDBC connection to release- Throws:
java.sql.SQLException- Indicates a problem closing the connection
-
getConnection
public java.sql.Connection getConnection(java.lang.String tenantIdentifier) throws java.sql.SQLExceptionDescription copied from interface:MultiTenantConnectionProviderObtains a connection for Hibernate use according to the underlying strategy of this provider.- Specified by:
getConnectionin interfaceMultiTenantConnectionProvider- Parameters:
tenantIdentifier- The identifier of the tenant for which to get a connection- Returns:
- The obtained JDBC connection
- Throws:
java.sql.SQLException- Indicates a problem opening a connection
-
releaseConnection
public void releaseConnection(java.lang.String tenantIdentifier, java.sql.Connection connection) throws java.sql.SQLExceptionDescription copied from interface:MultiTenantConnectionProviderRelease a connection from Hibernate use.- Specified by:
releaseConnectionin interfaceMultiTenantConnectionProvider- Parameters:
tenantIdentifier- The identifier of the tenant.connection- The JDBC connection to release- Throws:
java.sql.SQLException- Indicates a problem closing the connection
-
supportsAggressiveRelease
public boolean supportsAggressiveRelease()
Description copied from interface:MultiTenantConnectionProviderDoes this connection provider support aggressive release of JDBC connections and re-acquisition of those connections (if need be) later? This is used in conjunction withAvailableSettings.RELEASE_CONNECTIONSto aggressively release JDBC connections. However, the configured ConnectionProvider must support re-acquisition of the same underlying connection for that semantic to work. Typically, this is only true in managed environments where a container tracks connections by transaction or thread. Note that JTA semantic depends on the fact that the underlying connection provider does support aggressive release.- Specified by:
supportsAggressiveReleasein interfaceMultiTenantConnectionProvider- Returns:
trueif aggressive releasing is supported;falseotherwise.
-
isUnwrappableAs
public boolean isUnwrappableAs(java.lang.Class unwrapType)
Description copied from interface:WrappedCan this wrapped service be unwrapped as the indicated type?- Specified by:
isUnwrappableAsin interfaceWrapped- Parameters:
unwrapType- The type to check.- Returns:
- True/false.
-
-