|
The Spring Framework | |||||||||
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 Boolean |
getAutoCommitValue()
Return whether the returned Connection's "autoCommit" setting should be overridden. |
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. |
void |
initConnection()
Initialize the underlying Connection via the DriverManager. |
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. |
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". |
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)
protected boolean isSuppressClose()
public void setAutoCommit(boolean autoCommit)
protected Boolean getAutoCommitValue()
null
if none to be appliedpublic 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
public boolean shouldClose(Connection con)
shouldClose
in interface SmartDataSource
con
- the Connection to check
Connection.close()
public void destroy()
As this bean implements DisposableBean, a bean factory will automatically invoke this on destruction of its cached singletons.
destroy
in interface DisposableBean
public void initConnection() throws SQLException
SQLException
public void resetConnection()
protected void prepareConnection(Connection con) throws SQLException
The default implementation applies the auto-commit flag, if necessary. Can be overridden in subclasses.
con
- the Connection to prepare
SQLException
setAutoCommit(boolean)
protected Connection getCloseSuppressingConnectionProxy(Connection target)
target
- the original Connection to wrap
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |