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

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `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)`