org.springframework.jdbc.datasource
Class DriverManagerDataSource

java.lang.Object
  extended by org.springframework.jdbc.datasource.AbstractDataSource
      extended by org.springframework.jdbc.datasource.DriverManagerDataSource
All Implemented Interfaces:
DataSource
Direct Known Subclasses:
SingleConnectionDataSource

public class DriverManagerDataSource
extends AbstractDataSource

Simple implementation of the standard JDBC DataSource interface, configuring a plain old JDBC Driver via bean properties, and returning a new Connection for every getConnection call.

NOTE: This class is not an actual connection pool; it does not actually pool Connections. It just serves as simple replacement for a full-blown connection pool, implementing the same standard interface, but creating new Connections on every call.

Useful for test or standalone environments outside of a J2EE container, either as a DataSource bean in a respective ApplicationContext, or in conjunction with a simple JNDI environment. Pool-assuming Connection.close() calls will simply close the Connection, so any DataSource-aware persistence code should work.

In a J2EE container, it is recommended to use a JNDI DataSource provided by the container. Such a DataSource can be exposed as a DataSource bean in a Spring ApplicationContext via JndiObjectFactoryBean, for seamless switching to and from a local DataSource bean like this class. For tests, you can then either set up a mock JNDI environment through Spring's SimpleNamingContextBuilder, or switch the bean definition to a local DataSource (which is simpler and thus recommended).

If you need a "real" connection pool outside of a J2EE container, consider Apache's Jakarta Commons DBCP or C3P0. Commons DBCP's BasicDataSource and C3P0's ComboPooledDataSource are full connection pool beans, supporting the same basic properties as this class plus specific settings (such as minimal/maximal pool size etc).

Commons DBCP's BasicDataSource can even be used as a direct replacement for an instance of this class just by changing the class name of the bean definition to "org.apache.commons.dbcp.BasicDataSource", because the names of all common properties match exactly. Note that both BasicDataSource and ComboPooledDataSource should be defined with destroy-method="close", for immediate shutdown when the Spring ApplicationContext shuts down.

Since:
14.03.2003
Author:
Juergen Hoeller
See Also:
JndiObjectFactoryBean, SimpleNamingContextBuilder, BasicDataSource, ComboPooledDataSource

Field Summary
 
Fields inherited from class org.springframework.jdbc.datasource.AbstractDataSource
logger
 
Constructor Summary
DriverManagerDataSource()
          Constructor for bean-style configuration.
DriverManagerDataSource(String url)
          Create a new DriverManagerDataSource with the given JDBC URL, not specifying a username or password for JDBC access.
DriverManagerDataSource(String url, String username, String password)
          Create a new DriverManagerDataSource with the given standard DriverManager parameters.
DriverManagerDataSource(String driverClassName, String url, String username, String password)
          Create a new DriverManagerDataSource with the given standard DriverManager parameters.
 
Method Summary
 Connection getConnection()
          This implementation delegates to getConnectionFromDriverManager, using the default username and password of this DataSource.
 Connection getConnection(String username, String password)
          This implementation delegates to getConnectionFromDriverManager, using the given username and password.
protected  Connection getConnectionFromDriverManager()
          Get a Connection from the DriverManager, using the default username and password of this DataSource.
protected  Connection getConnectionFromDriverManager(String url, Properties props)
          Getting a connection using the nasty static from DriverManager is extracted into a protected method to allow for easy unit testing.
protected  Connection getConnectionFromDriverManager(String username, String password)
          Build properties for the DriverManager, including the given username and password (if any).
 Properties getConnectionProperties()
          Return the connection properties to be passed to the DriverManager, if any.
 String getDriverClassName()
          Return the JDBC driver class name, if any.
 String getPassword()
          Return the JDBC password to use for accessing the DriverManager.
 String getUrl()
          Return the JDBC URL to use for accessing the DriverManager.
 String getUsername()
          Return the JDBC username to use for accessing the DriverManager.
 void setConnectionProperties(Properties connectionProperties)
          Specify arbitrary connection properties as key/value pairs, to be passed to the DriverManager.
 void setDriverClassName(String driverClassName)
          Set the JDBC driver class name.
 void setPassword(String password)
          Set the JDBC password to use for accessing the DriverManager.
 void setUrl(String url)
          Set the JDBC URL to use for accessing the DriverManager.
 void setUsername(String username)
          Set the JDBC username to use for accessing the DriverManager.
 
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
 

Constructor Detail

DriverManagerDataSource

public DriverManagerDataSource()
Constructor for bean-style configuration.


DriverManagerDataSource

public DriverManagerDataSource(String driverClassName,
                               String url,
                               String username,
                               String password)
                        throws CannotGetJdbcConnectionException
Create a new DriverManagerDataSource 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
Throws:
CannotGetJdbcConnectionException
See Also:
DriverManager.getConnection(String, String, String)

DriverManagerDataSource

public DriverManagerDataSource(String url,
                               String username,
                               String password)
                        throws CannotGetJdbcConnectionException
Create a new DriverManagerDataSource 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
Throws:
CannotGetJdbcConnectionException
See Also:
DriverManager.getConnection(String, String, String)

DriverManagerDataSource

public DriverManagerDataSource(String url)
                        throws CannotGetJdbcConnectionException
Create a new DriverManagerDataSource with the given JDBC URL, not specifying a username or password for JDBC access.

Parameters:
url - the JDBC URL to use for accessing the DriverManager
Throws:
CannotGetJdbcConnectionException
See Also:
DriverManager.getConnection(String)
Method Detail

setDriverClassName

public void setDriverClassName(String driverClassName)
                        throws CannotGetJdbcConnectionException
Set the JDBC driver class name. This driver will get initialized on startup, registering itself with the JDK's DriverManager.

Alternatively, consider initializing the JDBC driver yourself before instantiating this DataSource.

Throws:
CannotGetJdbcConnectionException
See Also:
Class.forName(String), DriverManager.registerDriver(java.sql.Driver)

getDriverClassName

public String getDriverClassName()
Return the JDBC driver class name, if any.


setUrl

public void setUrl(String url)
Set the JDBC URL to use for accessing the DriverManager.

See Also:
DriverManager.getConnection(String, String, String)

getUrl

public String getUrl()
Return the JDBC URL to use for accessing the DriverManager.


setUsername

public void setUsername(String username)
Set the JDBC username to use for accessing the DriverManager.

See Also:
DriverManager.getConnection(String, String, String)

getUsername

public String getUsername()
Return the JDBC username to use for accessing the DriverManager.


setPassword

public void setPassword(String password)
Set the JDBC password to use for accessing the DriverManager.

See Also:
DriverManager.getConnection(String, String, String)

getPassword

public String getPassword()
Return the JDBC password to use for accessing the DriverManager.


setConnectionProperties

public void setConnectionProperties(Properties connectionProperties)
Specify arbitrary connection properties as key/value pairs, to be passed to the DriverManager.

Can also contain "user" and "password" properties. However, any "username" and "password" bean properties specified on this DataSource will override the respective connection properties.

See Also:
DriverManager.getConnection(String, java.util.Properties)

getConnectionProperties

public Properties getConnectionProperties()
Return the connection properties to be passed to the DriverManager, if any.


getConnection

public Connection getConnection()
                         throws SQLException
This implementation delegates to getConnectionFromDriverManager, using the default username and password of this DataSource.

Throws:
SQLException
See Also:
getConnectionFromDriverManager()

getConnection

public Connection getConnection(String username,
                                String password)
                         throws SQLException
This implementation delegates to getConnectionFromDriverManager, using the given username and password.

Throws:
SQLException
See Also:
getConnectionFromDriverManager(String, String)

getConnectionFromDriverManager

protected Connection getConnectionFromDriverManager()
                                             throws SQLException
Get a Connection from the DriverManager, using the default username and password of this DataSource.

Throws:
SQLException
See Also:
getConnectionFromDriverManager(String, String)

getConnectionFromDriverManager

protected Connection getConnectionFromDriverManager(String username,
                                                    String password)
                                             throws SQLException
Build properties for the DriverManager, including the given username and password (if any).

Throws:
SQLException
See Also:
getConnectionFromDriverManager(String, java.util.Properties)

getConnectionFromDriverManager

protected Connection getConnectionFromDriverManager(String url,
                                                    Properties props)
                                             throws SQLException
Getting a connection using the nasty static from DriverManager is extracted into a protected method to allow for easy unit testing.

Throws:
SQLException
See Also:
DriverManager.getConnection(String, java.util.Properties)


Copyright (c) 2002-2006 The Spring Framework Project.