Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| The Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## org.springframework.jdbc.datasource
Class DriverManagerDataSource

    java.lang.Object
      org.springframework.jdbc.datasource.AbstractDataSource
          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 corresponding 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 corresponding 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)`

Overview | Package | Class | Use | Tree | Deprecated | Index | Help
| The Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

Copyright © 2002-2007 The Spring Framework.