Top Description Constructors Methods
org.springframework.jdbc.datasource

public Class DriverManagerDataSource

extends AbstractDriverBasedDataSource
Class Inheritance
Known Direct Subclasses
org.springframework.jdbc.datasource.SingleConnectionDataSource
Imports
java.sql.Connection, .DriverManager, .SQLException, java.util.Properties, org.springframework.util.Assert, .ClassUtils

Simple implementation of the standard JDBC javax.sql.DataSource interface, configuring the plain old JDBC java.sql.DriverManager via bean properties, and returning a new java.sql.Connection from 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 a Jakarta EE 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.

NOTE: Within special class loading environments such as OSGi, this class is effectively superseded by SimpleDriverDataSource due to general class loading issues with the JDBC DriverManager that be resolved through direct Driver usage (which is exactly what SimpleDriverDataSource does).

In a Jakarta EE 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 org.springframework.jndi.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 complete solutions from third parties such as Simple-JNDI, or switch the bean definition to a local DataSource (which is simpler and thus recommended).

This DriverManagerDataSource class was originally designed alongside Apache Commons DBCP and C3P0, featuring bean-style BasicDataSource/ComboPooledDataSource classes with configuration properties for local resource setups. For a modern JDBC connection pool, consider HikariCP instead, exposing a corresponding HikariDataSource instance to the application.

Author
Juergen Hoeller
Since
14.03.2003
See Also
SimpleDriverDataSource

Constructor Summary

AccessConstructor and Description
public
DriverManagerDataSource()

Constructor for bean-style configuration.

public
DriverManagerDataSource(String
the JDBC URL to use for accessing the DriverManager
url
)

Create a new DriverManagerDataSource with the given JDBC URL, not specifying a username or password for JDBC access.

public
DriverManagerDataSource(String
the JDBC URL to use for accessing the DriverManager
url
,
String
the JDBC username to use for accessing the DriverManager
username
,
String
the JDBC password to use for accessing the DriverManager
password
)

Create a new DriverManagerDataSource with the given standard DriverManager parameters.

public
DriverManagerDataSource(String
the JDBC URL to use for accessing the DriverManager
url
,
Properties
the JDBC connection properties
conProps
)

Create a new DriverManagerDataSource with the given JDBC URL, not specifying a username or password for JDBC access.

Method Summary

Modifier and TypeMethod and Description
protected Connection
getConnectionFromDriver(Properties
the merged connection properties
props
)

Implements abstract org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver.

Obtain a Connection using the given properties.
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.

public void
setDriverClassName(String driverClassName)

Set the JDBC driver class name.

Inherited from org.springframework.jdbc.datasource.AbstractDriverBasedDataSource:
getCataloggetConnectiongetConnectiongetConnectionFromDrivergetConnectionPropertiesgetPasswordgetSchemagetUrlgetUsernamesetCatalogsetConnectionPropertiessetPasswordsetSchemasetUrlsetUsername

Constructor Detail

DriverManagerDataSourceback to summary
public DriverManagerDataSource()

Constructor for bean-style configuration.

DriverManagerDataSourceback to summary
public DriverManagerDataSource(String url)

Create a new DriverManagerDataSource with the given JDBC URL, not specifying a username or password for JDBC access.

Parameters
url:String

the JDBC URL to use for accessing the DriverManager

See Also
java.sql.DriverManager#getConnection(String)
DriverManagerDataSourceback to summary
public DriverManagerDataSource(String url, String username, String password)

Create a new DriverManagerDataSource with the given standard DriverManager parameters.

Parameters
url:String

the JDBC URL to use for accessing the DriverManager

username:String

the JDBC username to use for accessing the DriverManager

password:String

the JDBC password to use for accessing the DriverManager

See Also
java.sql.DriverManager#getConnection(String, String, String)
DriverManagerDataSourceback to summary
public DriverManagerDataSource(String url, Properties conProps)

Create a new DriverManagerDataSource with the given JDBC URL, not specifying a username or password for JDBC access.

Parameters
url:String

the JDBC URL to use for accessing the DriverManager

conProps:Properties

the JDBC connection properties

See Also
java.sql.DriverManager#getConnection(String)

Method Detail

getConnectionFromDriverback to summary
protected Connection getConnectionFromDriver(Properties props) throws SQLException

Implements abstract org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver.

Doc from org.springframework.jdbc.datasource.AbstractDriverBasedDataSource.getConnectionFromDriver.

Obtain a Connection using the given properties.

Template method to be implemented by subclasses.

Parameters
props:Properties

the merged connection properties

Returns:Connection

the obtained Connection

Annotations
@Override
Exceptions
SQLException:
in case of failure
getConnectionFromDriverManagerback to summary
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.

See Also
java.sql.DriverManager#getConnection(String, java.util.Properties)
setDriverClassNameback to summary
public void setDriverClassName(String driverClassName)

Set the JDBC driver class name. This driver will get initialized on startup, registering itself with the JDK's DriverManager.

NOTE: DriverManagerDataSource is primarily intended for accessing pre-registered JDBC drivers. If you need to register a new driver, consider using SimpleDriverDataSource instead. Alternatively, consider initializing the JDBC driver yourself before instantiating this DataSource. The "driverClassName" property is mainly preserved for backwards compatibility, as well as for migrating between Commons DBCP and this DataSource.

See Also
java.sql.DriverManager#registerDriver(java.sql.Driver), SimpleDriverDataSource