org.springframework.jdbc.core.support

## Class JdbcDaoSupport

- java.lang.Object
- - org.springframework.dao.support.DaoSupport
  - - org.springframework.jdbc.core.support.JdbcDaoSupport

All Implemented Interfaces:
  InitializingBean

Direct Known Subclasses:
  NamedParameterJdbcDaoSupport, SimpleJdbcDaoSupport

    public abstract class JdbcDaoSupport
    extends DaoSupport

Convenient super class for JDBC-based data access objects.

Requires a `DataSource` to be set, providing a `JdbcTemplate` based on it to subclasses through the `getJdbcTemplate()` method.

This base class is mainly intended for JdbcTemplate usage but can also be used when working with a Connection directly or when using `org.springframework.jdbc.object` operation objects.

Since:
  28.07.2003
Author:
  Juergen Hoeller
See Also:
  `setDataSource(javax.sql.DataSource)`, `getJdbcTemplate()`, `JdbcTemplate`

### Field Summary

### Fields inherited from class org.springframework.dao.support.DaoSupport

`logger`

### Constructor Summary

Constructors
Constructor and Description
`JdbcDaoSupport()`

### Method Summary

Methods
`protected void` `checkDaoConfig()` Abstract subclasses must override this to check their configuration.
`protected JdbcTemplate` `createJdbcTemplate(DataSource dataSource)` Create a JdbcTemplate for the given DataSource.
`protected Connection` `getConnection()` Get a JDBC Connection, either from the current transaction or a new one.
`DataSource` `getDataSource()` Return the JDBC DataSource used by this DAO.
`protected SQLExceptionTranslator` `getExceptionTranslator()` Return the SQLExceptionTranslator of this DAO's JdbcTemplate, for translating SQLExceptions in custom JDBC access code.
`JdbcTemplate` `getJdbcTemplate()` Return the JdbcTemplate for this DAO, pre-initialized with the DataSource or set explicitly.
`protected void` `initTemplateConfig()` Initialize the template-based configuration of this DAO.
`protected void` `releaseConnection(Connection con)` Close the given JDBC Connection, created via this DAO's DataSource, if it isn't bound to the thread.
`void` `setDataSource(DataSource dataSource)` Set the JDBC DataSource to be used by this DAO.
`void` `setJdbcTemplate(JdbcTemplate jdbcTemplate)` Set the JdbcTemplate for this DAO explicitly, as an alternative to specifying a DataSource.

### Methods inherited from class org.springframework.dao.support.DaoSupport

`afterPropertiesSet, initDao`

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

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

### Constructor Detail

#### JdbcDaoSupport

    public JdbcDaoSupport()

### Method Detail

#### setDataSource

    public final void setDataSource(DataSource dataSource)

Set the JDBC DataSource to be used by this DAO.

#### createJdbcTemplate

    protected JdbcTemplate createJdbcTemplate(DataSource dataSource)

Create a JdbcTemplate for the given DataSource. Only invoked if populating the DAO with a DataSource reference!

Can be overridden in subclasses to provide a JdbcTemplate instance with different configuration, or a custom JdbcTemplate subclass.

Parameters:
  `dataSource` - the JDBC DataSource to create a JdbcTemplate for
Returns:
  the new JdbcTemplate instance
See Also:
  `setDataSource(javax.sql.DataSource)`

#### getDataSource

    public final DataSource getDataSource()

Return the JDBC DataSource used by this DAO.

#### setJdbcTemplate

    public final void setJdbcTemplate(JdbcTemplate jdbcTemplate)

Set the JdbcTemplate for this DAO explicitly, as an alternative to specifying a DataSource.

#### getJdbcTemplate

    public final JdbcTemplate getJdbcTemplate()

Return the JdbcTemplate for this DAO, pre-initialized with the DataSource or set explicitly.

#### initTemplateConfig

    protected void initTemplateConfig()

Initialize the template-based configuration of this DAO. Called after a new JdbcTemplate has been set, either directly or through a DataSource.

This implementation is empty. Subclasses may override this to configure further objects based on the JdbcTemplate.

See Also:
  `getJdbcTemplate()`

#### checkDaoConfig

    protected void checkDaoConfig()

Description copied from class: `DaoSupport`
Abstract subclasses must override this to check their configuration.

Implementors should be marked as `final` if concrete subclasses are not supposed to override this template method themselves.

Specified by:
  `checkDaoConfig` in class `DaoSupport`

#### getExceptionTranslator

    protected final SQLExceptionTranslator getExceptionTranslator()

Return the SQLExceptionTranslator of this DAO's JdbcTemplate, for translating SQLExceptions in custom JDBC access code.

See Also:
  `JdbcAccessor.getExceptionTranslator()`

#### getConnection

    protected final Connection getConnection()
                                      throws CannotGetJdbcConnectionException

Get a JDBC Connection, either from the current transaction or a new one.

Returns:
  the JDBC Connection
Throws:
  `CannotGetJdbcConnectionException` - if the attempt to get a Connection failed
See Also:
  `DataSourceUtils.getConnection(javax.sql.DataSource)`

#### releaseConnection

    protected final void releaseConnection(Connection con)

Close the given JDBC Connection, created via this DAO's DataSource, if it isn't bound to the thread.

Parameters:
  `con` - Connection to close
See Also:
  `DataSourceUtils.releaseConnection(java.sql.Connection, javax.sql.DataSource)`