Top Description Fields Constructors Methods
org.hibernate.connection

public Class DriverManagerConnectionProvider

extends Object
implements ConnectionProvider
Class Inheritance
All Implemented Interfaces
org.hibernate.connection.ConnectionProvider
Imports
java.sql.Connection, .DriverManager, .SQLException, java.util.ArrayList, .Iterator, .Properties, org.slf4j.Logger, .LoggerFactory, org.hibernate.HibernateException, org.hibernate.cfg.Environment, org.hibernate.util.PropertiesHelper, .ReflectHelper

A connection provider that uses java.sql.DriverManager. This provider also implements a very rudimentary connection pool.
Author
Gavin King
See Also
ConnectionProvider

Field Summary

Modifier and TypeField and Description
private boolean
private int
private Properties
private Integer
private static final Logger
private final ArrayList<E>
private int
private String

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public void
close()

Implements org.hibernate.connection.ConnectionProvider.close.

Release all resources held by this provider.
public void
closeConnection(Connection
a JDBC connection
conn
)

Implements org.hibernate.connection.ConnectionProvider.closeConnection.

Dispose of a used connection.
public void
configure(Properties
SessionFactory properties
props
)

Implements org.hibernate.connection.ConnectionProvider.configure.

Initialize the connection provider from given properties.
protected void
finalize()

Overrides java.lang.Object.finalize.

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
public Connection
getConnection()

Implements org.hibernate.connection.ConnectionProvider.getConnection.

Grab a connection, with the autocommit mode specified by hibernate.connection.autocommit.
public boolean
supportsAggressiveRelease()

Implements org.hibernate.connection.ConnectionProvider.supportsAggressiveRelease.

Does this connection provider support aggressive release of JDBC connections and re-acquistion of those connections (if need be) later?
Inherited from java.lang.Object:
cloneequalsgetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

autocommitback to summary
private boolean autocommit
checkedOutback to summary
private int checkedOut
connectionPropsback to summary
private Properties connectionProps
isolationback to summary
private Integer isolation
logback to summary
private static final Logger log
poolback to summary
private final ArrayList<E> pool
poolSizeback to summary
private int poolSize
urlback to summary
private String url

Constructor Detail

DriverManagerConnectionProviderback to summary
public DriverManagerConnectionProvider()

Method Detail

closeback to summary
public void close()

Implements org.hibernate.connection.ConnectionProvider.close.

Doc from org.hibernate.connection.ConnectionProvider.close.

Release all resources held by this provider. JavaDoc requires a second sentence.

closeConnectionback to summary
public void closeConnection(Connection conn) throws SQLException

Implements org.hibernate.connection.ConnectionProvider.closeConnection.

Doc from org.hibernate.connection.ConnectionProvider.closeConnection.

Dispose of a used connection.

Parameters
conn:Connection

a JDBC connection

configureback to summary
public void configure(Properties props) throws HibernateException

Implements org.hibernate.connection.ConnectionProvider.configure.

Doc from org.hibernate.connection.ConnectionProvider.configure.

Initialize the connection provider from given properties.

Parameters
props:Properties

SessionFactory properties

finalizeback to summary
protected void finalize()

Overrides java.lang.Object.finalize.

Doc from java.lang.Object.finalize.

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. A subclass overrides the finalize method to dispose of system resources or to perform other cleanup.

When running in a Java virtual machine in which finalization has been disabled or removed, the garbage collector will never call finalize(). In a Java virtual machine in which finalization is enabled, the garbage collector might call finalize only after an indefinite delay.

The general contract of finalize is that it is invoked if and when the Java virtual machine has determined that there is no longer any means by which this object can be accessed by any thread that has not yet died, except as a result of an action taken by the finalization of some other object or class which is ready to be finalized. The finalize method may take any action, including making this object available again to other threads; the usual purpose of finalize, however, is to perform cleanup actions before the object is irrevocably discarded. For example, the finalize method for an object that represents an input/output connection might perform explicit I/O transactions to break the connection before the object is permanently discarded.

The finalize method of class Object performs no special action; it simply returns normally. Subclasses of Object may override this definition.

The Java programming language does not guarantee which thread will invoke the finalize method for any given object. It is guaranteed, however, that the thread that invokes finalize will not be holding any user-visible synchronization locks when finalize is invoked. If an uncaught exception is thrown by the finalize method, the exception is ignored and finalization of that object terminates.

After the finalize method has been invoked for an object, no further action is taken until the Java virtual machine has again determined that there is no longer any means by which this object can be accessed by any thread that has not yet died, including possible actions by other objects or classes which are ready to be finalized, at which point the object may be discarded.

The finalize method is never invoked more than once by a Java virtual machine for any given object.

Any exception thrown by the finalize method causes the finalization of this object to be halted, but is otherwise ignored.

getConnectionback to summary
public Connection getConnection() throws SQLException

Implements org.hibernate.connection.ConnectionProvider.getConnection.

Doc from org.hibernate.connection.ConnectionProvider.getConnection.

Grab a connection, with the autocommit mode specified by hibernate.connection.autocommit.

Returns:Connection

a JDBC connection

supportsAggressiveReleaseback to summary
public boolean supportsAggressiveRelease()

Implements org.hibernate.connection.ConnectionProvider.supportsAggressiveRelease.

Doc from org.hibernate.connection.ConnectionProvider.supportsAggressiveRelease.

Does this connection provider support aggressive release of JDBC connections and re-acquistion of those connections (if need be) later?

This is used in conjunction with org.hibernate.cfg.Environment.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.

See Also
ConnectionProvider#supportsAggressiveRelease()