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

All Superinterfaces:
  Serializable, Service, Wrapped

All Known Implementing Classes:
  C3P0ConnectionProvider, DatasourceConnectionProviderImpl, DriverManagerConnectionProviderImpl, InjectedDataSourceConnectionProvider, ProxoolConnectionProvider, TestingJtaBootstrap.JtaAwareDataSourceConnectionProvider, 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.