|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.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
CannotGetJdbcConnectionExceptionDriverManager.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
CannotGetJdbcConnectionExceptionDriverManager.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
CannotGetJdbcConnectionExceptionDriverManager.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 SmartDataSourcecon - connection, which should have been obtained
from this data source, to check closure status of
protected void init()
throws SQLException
SQLExceptionprotected void init(Connection target)
target - the JDBC Connection to use
public 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 DisposableBeanSQLExceptionpublic Connection getConnection() throws SQLException
DriverManagerDataSourcegetConnectionFromDriverManager,
using the default username and password of this DataSource.
getConnection in interface DataSourcegetConnection in class DriverManagerDataSourceSQLExceptionDriverManagerDataSource.getConnectionFromDriverManager()public Connection getConnection(String username, String password) throws SQLException
getConnection in interface DataSourcegetConnection in class DriverManagerDataSourceprotected 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 | |||||||||