Interface ConnectionProvider
- All Superinterfaces:
Serializable,Service,Wrapped
- All Known Implementing Classes:
DatasourceConnectionProviderImpl,DriverManagerConnectionProviderImpl,UserSuppliedConnectionProviderImpl
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.Obtains a connection for Hibernate use according to the underlying strategy of this provider.default DatabaseConnectionInfogetDatabaseConnectionInfo(Dialect dialect) default DatabaseConnectionInfogetDatabaseConnectionInfo(Dialect dialect, ExtractedDatabaseMetaData metaData) booleanDoes this connection provider support aggressive release of JDBC connections and later re-acquisition of those connections if needed?Methods inherited from interface org.hibernate.service.spi.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 otherwise obtaining a connection.
-
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 otherwise releasing a connection.
-
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.
-
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
-