public class

SingleConnectionDataSource

extends DriverManagerDataSource
implements DisposableBean SmartDataSource
java.lang.Object
   ↳ org.springframework.jdbc.datasource.AbstractDataSource
     ↳ org.springframework.jdbc.datasource.AbstractDriverBasedDataSource
       ↳ org.springframework.jdbc.datasource.DriverManagerDataSource
         ↳ org.springframework.jdbc.datasource.SingleConnectionDataSource

Class Overview

Implementation of SmartDataSource that wraps a single JDBC Connection which is not closed after use. Obviously, this is not multi-threading capable.

Note that at shutdown, someone should close the underlying Connection via the close() method. Client code will never call close on the Connection handle if it is SmartDataSource-aware (e.g. uses DataSourceUtils.releaseConnection).

If client code will call close() in the assumption of a pooled Connection, like when using persistence tools, set "suppressClose" to "true". This will return a close-suppressing proxy instead of the physical Connection. Be aware that you will not be able to cast this to a native OracleConnection or the like anymore; you need to use a NativeJdbcExtractor then.

This is primarily intended for testing. For example, it enables easy testing outside an application server, for code that expects to work on a DataSource. In contrast to DriverManagerDataSource, it reuses the same Connection all the time, avoiding excessive creation of physical Connections.

Summary

[Expand]
Inherited Fields
From class org.springframework.jdbc.datasource.AbstractDataSource
Public Constructors
SingleConnectionDataSource()
Constructor for bean-style configuration.
SingleConnectionDataSource(String driverClassName, String url, String username, String password, boolean suppressClose)
This constructor is deprecated. since Spring 2.5. Driver parameter usage is generally not recommended for a SingleConnectionDataSource. If you insist on using driver parameters directly, set up the Driver class manually before invoking this DataSource.
SingleConnectionDataSource(String url, String username, String password, boolean suppressClose)
Create a new SingleConnectionDataSource with the given standard DriverManager parameters.
SingleConnectionDataSource(String url, boolean suppressClose)
Create a new SingleConnectionDataSource with the given standard DriverManager parameters.
SingleConnectionDataSource(Connection target, boolean suppressClose)
Create a new SingleConnectionDataSource with a given Connection.
Public Methods
void destroy()
Close the underlying Connection.
Connection getConnection()
This implementation delegates to getConnectionFromDriver, using the default username and password of this DataSource.
Connection getConnection(String username, String password)
Specifying a custom username and password doesn't make sense with a single Connection.
void initConnection()
Initialize the underlying Connection via the DriverManager.
void resetConnection()
Reset the underlying shared Connection, to be reinitialized on next access.
void setAutoCommit(boolean autoCommit)
Set whether the returned Connection's "autoCommit" setting should be overridden.
void setSuppressClose(boolean suppressClose)
Set whether the returned Connection should be a close-suppressing proxy or the physical Connection.
boolean shouldClose(Connection con)
This is a single Connection: Do not close it when returning to the "pool".
Protected Methods
Boolean getAutoCommitValue()
Return whether the returned Connection's "autoCommit" setting should be overridden.
Connection getCloseSuppressingConnectionProxy(Connection target)
Wrap the given Connection with a proxy that delegates every method call to it but suppresses close calls.
boolean isSuppressClose()
Return whether the returned Connection will be a close-suppressing proxy or the physical Connection.
void prepareConnection(Connection con)
Prepare the given Connection before it is exposed.
[Expand]
Inherited Methods
From class org.springframework.jdbc.datasource.DriverManagerDataSource
From class org.springframework.jdbc.datasource.AbstractDriverBasedDataSource
From class org.springframework.jdbc.datasource.AbstractDataSource
From class java.lang.Object
From interface java.sql.Wrapper
From interface javax.sql.CommonDataSource
From interface javax.sql.DataSource
From interface org.springframework.beans.factory.DisposableBean
From interface org.springframework.jdbc.datasource.SmartDataSource

Public Constructors

public SingleConnectionDataSource ()

Constructor for bean-style configuration.

public SingleConnectionDataSource (String driverClassName, String url, String username, String password, boolean suppressClose)

This constructor is deprecated.
since Spring 2.5. Driver parameter usage is generally not recommended for a SingleConnectionDataSource. If you insist on using driver parameters directly, set up the Driver class manually before invoking this DataSource.

Create a new SingleConnectionDataSource with the given standard DriverManager parameters.

Parameters
driverClassName the JDBC driver class name
url the JDBC URL to use for accessing the DriverManager
username the JDBC username to use for accessing the DriverManager
password the JDBC password to use for accessing the DriverManager
suppressClose if the returned Connection should be a close-suppressing proxy or the physical Connection

public SingleConnectionDataSource (String url, String username, String password, boolean suppressClose)

Create a new SingleConnectionDataSource with the given standard DriverManager parameters.

Parameters
url the JDBC URL to use for accessing the DriverManager
username the JDBC username to use for accessing the DriverManager
password the JDBC password to use for accessing the DriverManager
suppressClose if the returned Connection should be a close-suppressing proxy or the physical Connection

public SingleConnectionDataSource (String url, boolean suppressClose)

Create a new SingleConnectionDataSource with the given standard DriverManager parameters.

Parameters
url the JDBC URL to use for accessing the DriverManager
suppressClose if the returned Connection should be a close-suppressing proxy or the physical Connection

public SingleConnectionDataSource (Connection target, boolean suppressClose)

Create a new SingleConnectionDataSource with a given Connection.

Parameters
target underlying target Connection
suppressClose if the Connection should be wrapped with a Connection that suppresses close() calls (to allow for normal close() usage in applications that expect a pooled Connection but do not know our SmartDataSource interface)

Public Methods

public void destroy ()

Close the underlying Connection. The provider of this DataSource needs to care for proper shutdown.

As this bean implements DisposableBean, a bean factory will automatically invoke this on destruction of its cached singletons.

public Connection getConnection ()

This implementation delegates to getConnectionFromDriver, using the default username and password of this DataSource.

Throws
SQLException

public Connection getConnection (String username, String password)

Specifying a custom username and password doesn't make sense with a single Connection. Returns the single Connection if given the same username and password; throws a SQLException else.

Throws
SQLException

public void initConnection ()

Initialize the underlying Connection via the DriverManager.

Throws
SQLException

public void resetConnection ()

Reset the underlying shared Connection, to be reinitialized on next access.

public void setAutoCommit (boolean autoCommit)

Set whether the returned Connection's "autoCommit" setting should be overridden.

public void setSuppressClose (boolean suppressClose)

Set whether the returned Connection should be a close-suppressing proxy or the physical Connection.

public boolean shouldClose (Connection con)

This is a single Connection: Do not close it when returning to the "pool".

Parameters
con the Connection to check
Returns
  • whether the given Connection should be closed

Protected Methods

protected Boolean getAutoCommitValue ()

Return whether the returned Connection's "autoCommit" setting should be overridden.

Returns
  • the "autoCommit" value, or null if none to be applied

protected Connection getCloseSuppressingConnectionProxy (Connection target)

Wrap the given Connection with a proxy that delegates every method call to it but suppresses close calls.

Parameters
target the original Connection to wrap
Returns
  • the wrapped Connection

protected boolean isSuppressClose ()

Return whether the returned Connection will be a close-suppressing proxy or the physical Connection.

protected void prepareConnection (Connection con)

Prepare the given Connection before it is exposed.

The default implementation applies the auto-commit flag, if necessary. Can be overridden in subclasses.

Parameters
con the Connection to prepare
Throws
SQLException