|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.jdbc.datasource.AbstractDataSource org.springframework.jdbc.datasource.DriverManagerDataSource org.springframework.jdbc.datasource.SingleConnectionDataSource
public class SingleConnectionDataSource
Implementation of SmartDataSource that wraps a single 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 for this 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.
getConnection()
,
Connection.close()
,
DataSourceUtils.releaseConnection(java.sql.Connection, javax.sql.DataSource)
,
NativeJdbcExtractor
Field Summary |
---|
Fields inherited from class org.springframework.jdbc.datasource.AbstractDataSource |
---|
logger |
Constructor Summary | |
---|---|
SingleConnectionDataSource()
Constructor for bean-style configuration. |
|
SingleConnectionDataSource(Connection target,
boolean suppressClose)
Create a new SingleConnectionDataSource with a given Connection. |
|
SingleConnectionDataSource(String url,
boolean suppressClose)
Create a new SingleConnectionDataSource with the given standard DriverManager parameters. |
|
SingleConnectionDataSource(String url,
String username,
String password,
boolean suppressClose)
Create a new SingleConnectionDataSource with the given standard DriverManager parameters. |
|
SingleConnectionDataSource(String driverClassName,
String url,
String username,
String password,
boolean suppressClose)
Create a new SingleConnectionDataSource with the given standard DriverManager parameters. |
Method Summary | |
---|---|
void |
destroy()
Close the underlying connection. |
protected Connection |
getCloseSuppressingConnectionProxy(Connection target)
Wrap the given Connection with a proxy that delegates every method call to it but suppresses close calls. |
Connection |
getConnection()
This implementation delegates to getConnectionFromDriverManager ,
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. |
protected void |
init()
Initialize the underlying connection via DriverManager. |
protected void |
init(Connection target)
Initialize the underlying connection. |
boolean |
isSuppressClose()
Return whether the returned Connection will be a close-suppressing proxy or the physical Connection. |
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". |
Methods inherited from class org.springframework.jdbc.datasource.DriverManagerDataSource |
---|
getConnectionFromDriverManager, getConnectionFromDriverManager, getConnectionFromDriverManager, getConnectionProperties, getDriverClassName, getPassword, getUrl, getUsername, setConnectionProperties, setDriverClassName, setPassword, setUrl, setUsername |
Methods inherited from class org.springframework.jdbc.datasource.AbstractDataSource |
---|
getLoginTimeout, getLogWriter, setLoginTimeout, setLogWriter |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface javax.sql.DataSource |
---|
getLoginTimeout, getLogWriter, setLoginTimeout, setLogWriter |
Constructor Detail |
---|
public SingleConnectionDataSource()
public SingleConnectionDataSource(String driverClassName, String url, String username, String password, boolean suppressClose) throws CannotGetJdbcConnectionException
driverClassName
- the JDBC driver class nameurl
- the JDBC URL to use for accessing the DriverManagerusername
- the JDBC username to use for accessing the DriverManagerpassword
- the JDBC password to use for accessing the DriverManagersuppressClose
- if the returned Connection should be a
close-suppressing proxy or the physical Connection
CannotGetJdbcConnectionException
DriverManager.getConnection(String, String, String)
public SingleConnectionDataSource(String url, String username, String password, boolean suppressClose) throws CannotGetJdbcConnectionException
url
- the JDBC URL to use for accessing the DriverManagerusername
- the JDBC username to use for accessing the DriverManagerpassword
- the JDBC password to use for accessing the DriverManagersuppressClose
- if the returned Connection should be a
close-suppressing proxy or the physical Connection
CannotGetJdbcConnectionException
DriverManager.getConnection(String, String, String)
public SingleConnectionDataSource(String url, boolean suppressClose) throws CannotGetJdbcConnectionException
url
- the JDBC URL to use for accessing the DriverManagersuppressClose
- if the returned Connection should be a
close-suppressing proxy or the physical Connection
CannotGetJdbcConnectionException
DriverManager.getConnection(String, String, String)
public SingleConnectionDataSource(Connection target, boolean suppressClose)
target
- underlying target ConnectionsuppressClose
- 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)Method Detail |
---|
public void setSuppressClose(boolean suppressClose)
public boolean isSuppressClose()
public void setAutoCommit(boolean autoCommit)
public boolean shouldClose(Connection con)
shouldClose
in interface SmartDataSource
con
- connection, which should have been obtained
from this data source, to check closure status of
protected void init() throws SQLException
SQLException
protected void init(Connection target)
target
- the JDBC Connection to usepublic void destroy() throws SQLException
As this bean implements DisposableBean, a bean factory will automatically invoke this on destruction of its cached singletons.
destroy
in interface DisposableBean
SQLException
public Connection getConnection() throws SQLException
DriverManagerDataSource
getConnectionFromDriverManager
,
using the default username and password of this DataSource.
getConnection
in interface DataSource
getConnection
in class DriverManagerDataSource
SQLException
DriverManagerDataSource.getConnectionFromDriverManager()
public Connection getConnection(String username, String password) throws SQLException
getConnection
in interface DataSource
getConnection
in class DriverManagerDataSource
SQLException
DriverManagerDataSource.getConnectionFromDriverManager(String, String)
protected Connection getCloseSuppressingConnectionProxy(Connection target)
target
- the original Connection to wrap
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |