Interface MultiTenantConnectionProvider
-
- All Known Implementing Classes:
AbstractDataSourceBasedMultiTenantConnectionProviderImpl,AbstractMultiTenantConnectionProvider,DataSourceBasedMultiTenantConnectionProviderImpl
public interface MultiTenantConnectionProvider extends Service, Wrapped
A specialized Connection provider contract used when the application is using multi-tenancy support requiring tenant aware connections.
-
-
Method Summary
All Methods Instance Methods Abstract 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.voidreleaseAnyConnection(java.sql.Connection connection)Release a connection obtained fromgetAnyConnection()voidreleaseConnection(java.lang.String tenantIdentifier, java.sql.Connection connection)Release a connection from Hibernate use.booleansupportsAggressiveRelease()Does this connection provider support aggressive release of JDBC connections and re-acquisition of those connections (if need be) later?-
Methods inherited from interface org.hibernate.service.spi.Wrapped
isUnwrappableAs, unwrap
-
-
-
-
Method Detail
-
getAnyConnection
java.sql.Connection getAnyConnection() throws java.sql.SQLExceptionAllows 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).- Returns:
- The database metadata.
- Throws:
java.sql.SQLException- Indicates a problem opening a connection
-
releaseAnyConnection
void releaseAnyConnection(java.sql.Connection connection) throws java.sql.SQLExceptionRelease a connection obtained fromgetAnyConnection()- Parameters:
connection- The JDBC connection to release- Throws:
java.sql.SQLException- Indicates a problem closing the connection
-
getConnection
java.sql.Connection getConnection(java.lang.String tenantIdentifier) throws java.sql.SQLExceptionObtains a connection for Hibernate use according to the underlying strategy of this provider.- 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 connectionHibernateException- Indicates a problem otherwise obtaining a connection.
-
releaseConnection
void releaseConnection(java.lang.String tenantIdentifier, java.sql.Connection connection) throws java.sql.SQLExceptionRelease a connection from Hibernate use.- Parameters:
connection- The JDBC connection to releasetenantIdentifier- The identifier of the tenant.- Throws:
java.sql.SQLException- Indicates a problem closing the connectionHibernateException- Indicates a problem otherwise releasing a connection.
-
supportsAggressiveRelease
boolean supportsAggressiveRelease()
Does 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.- Returns:
trueif aggressive releasing is supported;falseotherwise.
-
-