Class AbstractDataSourceBasedMultiTenantConnectionProviderImpl
- java.lang.Object
-
- org.hibernate.engine.jdbc.connections.spi.AbstractDataSourceBasedMultiTenantConnectionProviderImpl
-
- All Implemented Interfaces:
java.io.Serializable,MultiTenantConnectionProvider,Service,Wrapped
- Direct Known Subclasses:
DataSourceBasedMultiTenantConnectionProviderImpl
public abstract class AbstractDataSourceBasedMultiTenantConnectionProviderImpl extends java.lang.Object implements MultiTenantConnectionProvider
Basic support for implementations ofMultiTenantConnectionProviderbased on DataSources.- See Also:
- Serialized Form
-
-
Constructor Summary
Constructors Constructor Description AbstractDataSourceBasedMultiTenantConnectionProviderImpl()
-
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).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 javax.sql.DataSourceselectAnyDataSource()protected abstract javax.sql.DataSourceselectDataSource(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
-
selectAnyDataSource
protected abstract javax.sql.DataSource selectAnyDataSource()
-
selectDataSource
protected abstract javax.sql.DataSource selectDataSource(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.
-
-