|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.hibernate.service.jdbc.connections.spi.AbstractMultiTenantConnectionProvider
public abstract class AbstractMultiTenantConnectionProvider
Basic support for MultiTenantConnectionProvider
implementations using
individual ConnectionProvider
instances per tenant behind the scenes.
Constructor Summary | |
---|---|
AbstractMultiTenantConnectionProvider()
|
Method Summary | ||
---|---|---|
Connection |
getAnyConnection()
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 ConnectionProvider |
getAnyConnectionProvider()
|
|
Connection |
getConnection(String tenantIdentifier)
Obtains a connection for Hibernate use according to the underlying strategy of this provider. |
|
boolean |
isUnwrappableAs(Class unwrapType)
Can this wrapped service be unwrapped as the indicated type? |
|
void |
releaseAnyConnection(Connection connection)
Release a connection obtained from MultiTenantConnectionProvider.getAnyConnection() |
|
void |
releaseConnection(String tenantIdentifier,
Connection connection)
Release a connection from Hibernate use. |
|
protected abstract ConnectionProvider |
selectConnectionProvider(String tenantIdentifier)
|
|
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 with AvailableSettings.RELEASE_CONNECTIONS
to aggressively release JDBC connections. |
|
|
unwrap(Class<T> unwrapType)
Unproxy the service proxy |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public AbstractMultiTenantConnectionProvider()
Method Detail |
---|
protected abstract ConnectionProvider getAnyConnectionProvider()
protected abstract ConnectionProvider selectConnectionProvider(String tenantIdentifier)
public Connection getAnyConnection() throws SQLException
MultiTenantConnectionProvider
getAnyConnection
in interface MultiTenantConnectionProvider
SQLException
- Indicates a problem opening a connectionpublic void releaseAnyConnection(Connection connection) throws SQLException
MultiTenantConnectionProvider
MultiTenantConnectionProvider.getAnyConnection()
releaseAnyConnection
in interface MultiTenantConnectionProvider
connection
- The JDBC connection to release
SQLException
- Indicates a problem closing the connectionpublic Connection getConnection(String tenantIdentifier) throws SQLException
MultiTenantConnectionProvider
getConnection
in interface MultiTenantConnectionProvider
tenantIdentifier
- The identifier of the tenant for which to get a connection
SQLException
- Indicates a problem opening a connectionpublic void releaseConnection(String tenantIdentifier, Connection connection) throws SQLException
MultiTenantConnectionProvider
releaseConnection
in interface MultiTenantConnectionProvider
tenantIdentifier
- The identifier of the tenant.connection
- The JDBC connection to release
SQLException
- Indicates a problem closing the connectionpublic boolean supportsAggressiveRelease()
MultiTenantConnectionProvider
AvailableSettings.RELEASE_CONNECTIONS
to 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.
supportsAggressiveRelease
in interface MultiTenantConnectionProvider
true
if aggressive releasing is supported; false
otherwise.public boolean isUnwrappableAs(Class unwrapType)
Wrapped
isUnwrappableAs
in interface Wrapped
unwrapType
- The type to check.
public <T> T unwrap(Class<T> unwrapType)
Wrapped
unwrap
in interface Wrapped
unwrapType
- The java type as which to unwrap this instance.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |