org.hibernate.service.jdbc.connections.spi
Interface ConnectionProvider

All Superinterfaces:
Serializable, Service, Wrapped
All Known Implementing Classes:
C3P0ConnectionProvider, DatasourceConnectionProviderImpl, DriverManagerConnectionProviderImpl, InjectedDataSourceConnectionProvider, JtaAwareConnectionProviderImpl, ProxoolConnectionProvider, UserSuppliedConnectionProviderImpl

public interface ConnectionProvider
extends Service, Wrapped

A contract for obtaining JDBC connections.

Implementors might also implement connection pooling.

Implementors should provide a public default constructor.


Method Summary
 void closeConnection(Connection conn)
          Release a connection from Hibernate use.
 Connection getConnection()
          Obtains a connection for Hibernate use according to the underlying strategy of this provider.
 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.

 
Methods inherited from interface org.hibernate.service.spi.Wrapped
isUnwrappableAs, unwrap
 

Method Detail

getConnection

Connection getConnection()
                         throws SQLException
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 connection
HibernateException - Indicates a problem otherwise obtaining a connection.

closeConnection

void closeConnection(Connection conn)
                     throws SQLException
Release a connection from Hibernate use.

Parameters:
conn - The JDBC connection to release
Throws:
SQLException - Indicates a problem closing the connection
HibernateException - 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 with 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.

Returns:
true if aggressive releasing is supported; false otherwise.


Copyright © 2001-2012 Red Hat, Inc. All Rights Reserved.