Package org.springframework.jdbc.datasource

# Class SimpleDriverDataSource

java.lang.Object
org.springframework.jdbc.datasource.AbstractDataSource
org.springframework.jdbc.datasource.AbstractDriverBasedDataSource
org.springframework.jdbc.datasource.SimpleDriverDataSource

All Implemented Interfaces:
  `Wrapper`, `CommonDataSource`, `DataSource`

public class SimpleDriverDataSource extends AbstractDriverBasedDataSource
Simple implementation of the standard JDBC `DataSource` interface, configuring a plain old JDBC `Driver` via bean properties, and returning a new `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.

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 `JndiObjectFactoryBean`, for seamless switching to and from a local DataSource bean like this class.

This `SimpleDriverDataSource` 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.

Since:
  2.5.5
Author:
  Juergen Hoeller
See Also:
  - `DriverManagerDataSource`

## Field Summary

### Fields inherited from class org.springframework.jdbc.datasource.AbstractDataSource

`logger`

## Constructor Summary

Constructors
Constructor
Description
`SimpleDriverDataSource()`
Constructor for bean-style configuration.
`SimpleDriverDataSource(Driver driver, String url)`
Create a new DriverManagerDataSource with the given standard Driver parameters.
`SimpleDriverDataSource(Driver driver, String url, String username, String password)`
Create a new DriverManagerDataSource with the given standard Driver parameters.
`SimpleDriverDataSource(Driver driver, String url, Properties conProps)`
Create a new DriverManagerDataSource with the given standard Driver parameters.

## Method Summary

Modifier and Type
Method
Description
`protected Connection`
`getConnectionFromDriver(Properties props)`
Obtain a Connection using the given properties.
`Driver`
`getDriver()`
Return the JDBC Driver instance to use.
`void`
`setDriver(Driver driver)`
Specify the JDBC Driver instance to use.
`void`
`setDriverClass(Class<? extends Driver> driverClass)`
Specify the JDBC Driver implementation class to use.

### Methods inherited from class org.springframework.jdbc.datasource.AbstractDriverBasedDataSource

`getCatalog, getConnection, getConnection, getConnectionFromDriver, getConnectionProperties, getPassword, getSchema, getUrl, getUsername, setCatalog, setConnectionProperties, setPassword, setSchema, setUrl, setUsername`

### Methods inherited from class org.springframework.jdbc.datasource.AbstractDataSource

`getLoginTimeout, getLogWriter, getParentLogger, isWrapperFor, setLoginTimeout, setLogWriter, unwrap`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Methods inherited from interface javax.sql.CommonDataSource

`createShardingKeyBuilder`

### Methods inherited from interface javax.sql.DataSource

`createConnectionBuilder`

## Constructor Details

### SimpleDriverDataSource

public SimpleDriverDataSource()
Constructor for bean-style configuration.

### SimpleDriverDataSource

public SimpleDriverDataSource(Driver driver, String url)
Create a new DriverManagerDataSource with the given standard Driver parameters.

Parameters:
  `driver` - the JDBC Driver object
  `url` - the JDBC URL to use for accessing the DriverManager
See Also:
  - `Driver.connect(String, java.util.Properties)`

### SimpleDriverDataSource

public SimpleDriverDataSource(Driver driver, String url, String username, String password)
Create a new DriverManagerDataSource with the given standard Driver parameters.

Parameters:
  `driver` - the JDBC Driver object
  `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
See Also:
  - `Driver.connect(String, java.util.Properties)`

### SimpleDriverDataSource

public SimpleDriverDataSource(Driver driver, String url, Properties conProps)
Create a new DriverManagerDataSource with the given standard Driver parameters.

Parameters:
  `driver` - the JDBC Driver object
  `url` - the JDBC URL to use for accessing the DriverManager
  `conProps` - the JDBC connection properties
See Also:
  - `Driver.connect(String, java.util.Properties)`

## Method Details

### setDriverClass

public void setDriverClass(Class<? extends Driver> driverClass)
Specify the JDBC Driver implementation class to use.

An instance of this Driver class will be created and held within the SimpleDriverDataSource.

See Also:
  - `setDriver(java.sql.Driver)`

### setDriver

public void setDriver(@Nullable Driver driver)
Specify the JDBC Driver instance to use.

This allows for passing in a shared, possibly pre-configured Driver instance.

See Also:
  - `setDriverClass(java.lang.Class<? extends java.sql.Driver>)`

### getDriver

@Nullable public Driver getDriver()
Return the JDBC Driver instance to use.

### getConnectionFromDriver

protected Connection getConnectionFromDriver(Properties props) throws SQLException
Description copied from class: `AbstractDriverBasedDataSource`
Obtain a Connection using the given properties.

Template method to be implemented by subclasses.

Specified by:
  `getConnectionFromDriver` in class `AbstractDriverBasedDataSource`
Parameters:
  `props` - the merged connection properties
Returns:
  the obtained Connection
Throws:
  `SQLException` - in case of failure