Interface ConnectionProvider
- All Superinterfaces:
Serializable, Service, Wrapped
Implementors must provide a public default constructor.
A ConnectionProvider may be selected using the configuration property
"hibernate.connection.provider_class".
It's not usual for an application to implement its own ConnectionProvider.
Instead, the Hibernate project provides pre-built implementations for a variety of
connection pools as add-on modules.
On the other hand, this is an extremely important extension point for integration with containers and frameworks.
- See Also:
-
Method Summary
Modifier and TypeMethodDescriptionvoidcloseConnection(Connection connection) Release a connection from Hibernate use.default voidcloseReadOnlyConnection(Connection connection) Release a connection to a read-only replica from Hibernate use.Obtains a connection for Hibernate use according to the underlying strategy of this provider.default DatabaseConnectionInfogetDatabaseConnectionInfo(Dialect dialect) default DatabaseConnectionInfogetDatabaseConnectionInfo(Dialect dialect, ExtractedDatabaseMetaData metaData) default ConnectionObtains a connection to a read-only replica for use according to the underlying strategy of this provider.default booleanDoes this connection provider correctly set the read-only mode of the returned JDBC connections?default booleanDoes this connection provider correctly set the schema of the returned JDBC connections?booleanDoes this connection provider support aggressive release of JDBC connections and later re-acquisition of those connections if needed?Methods inherited from interface Wrapped
isUnwrappableAs, unwrap
-
Method Details
-
getConnection
Obtains a connection for Hibernate use according to the underlying strategy of this provider.- Returns:
- The obtained JDBC connection
- Throws:
SQLException- Indicates a problem opening a connectionHibernateException- Indicates a problem obtaining a connection.
-
getReadOnlyConnection
Obtains a connection to a read-only replica for use according to the underlying strategy of this provider.- Returns:
- The obtained JDBC connection
- Throws:
SQLException- Indicates a problem opening a connectionHibernateException- Indicates a problem obtaining a connection.- Since:
- 7.2
- Implementation Note:
- This default implementation simply calls
getConnection(), which returns a connection to a writable replica. If this operation is overridden to return a connection to a distinct read-only replica, the matching operationcloseReadOnlyConnection(Connection)must also be overridden.
-
closeConnection
Release a connection from Hibernate use.- Parameters:
connection- The JDBC connection to release- Throws:
SQLException- Indicates a problem closing the connectionHibernateException- Indicates a problem releasing a connection.
-
closeReadOnlyConnection
Release a connection to a read-only replica from Hibernate use.- Parameters:
connection- The JDBC connection to release- Throws:
SQLException- Indicates a problem closing the connectionHibernateException- Indicates a problem otherwise releasing a connection.- Since:
- 7.2
- Implementation Note:
- This default implementation simply calls
closeConnection(Connection). IfgetReadOnlyConnection()is overridden to return a connection to a distinct read-only replica, this operation must also be overridden.
-
supportsAggressiveRelease
boolean supportsAggressiveRelease()Does this connection provider support aggressive release of JDBC connections and later re-acquisition of those connections if needed?This is used in conjunction with
ConnectionReleaseMode.AFTER_STATEMENTto aggressively release JDBC connections. However, the configuredConnectionProvidermust 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.
-
handlesConnectionSchema
Does this connection provider correctly set the schema of the returned JDBC connections?- Returns:
trueif the connection provider handles this;falseif the client should set the schema- Implementation Note:
- If necessary, a
ConnectionProvidermay callMultiTenancy.getTenantSchemaMapper(Map, StandardServiceRegistry)to obtain theTenantSchemaMapper.
-
handlesConnectionReadOnly
Does this connection provider correctly set the read-only mode of the returned JDBC connections?- Returns:
trueif the connection provider handles this;falseif the client should set the read-only mode
-
getDatabaseConnectionInfo
- Returns:
- an informative instance of
DatabaseConnectionInfofor logging. - Since:
- 6.6
-
getDatabaseConnectionInfo
default DatabaseConnectionInfo getDatabaseConnectionInfo(Dialect dialect, ExtractedDatabaseMetaData metaData) - Returns:
- an informative instance of
DatabaseConnectionInfofor logging. - Since:
- 7.0
-