org.springframework.jdbc.support.nativejdbc

## Class Jdbc4NativeJdbcExtractor

- java.lang.Object
- - org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter
  - - org.springframework.jdbc.support.nativejdbc.Jdbc4NativeJdbcExtractor

- All Implemented Interfaces:
    NativeJdbcExtractor
  Direct Known Subclasses:
    OracleJdbc4NativeJdbcExtractor

      public class Jdbc4NativeJdbcExtractor
      extends NativeJdbcExtractorAdapter

  `NativeJdbcExtractor` implementation that delegates to JDBC 4.0's `unwrap` method, as defined by `Wrapper`. You will typically need to specify a vendor `Connection type` / `Statement type` / `ResultSet type` to extract, since JDBC 4.0 only actually unwraps to a given target type.

  Note: Only use this when actually running against a JDBC 4.0 driver, with a connection pool that supports the JDBC 4.0 API (i.e. at least accepts JDBC 4.0 API calls and passes them through to the underlying driver)! Other than that, there is no need for connection pool specific setup. As of JDBC 4.0, NativeJdbcExtractors will typically be implemented for specific drivers instead of for specific pools (e.g. `OracleJdbc4NativeJdbcExtractor`).

  Since:
    2.5
  Author:
    Juergen Hoeller
  See Also:
    `Wrapper.unwrap(java.lang.Class<T>)`, `SimpleNativeJdbcExtractor`, `JdbcTemplate.setNativeJdbcExtractor(org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor)`, `OracleLobHandler.setNativeJdbcExtractor(org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor)`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Jdbc4NativeJdbcExtractor()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Connection` | `doGetNativeConnection(Connection con)` Not able to unwrap: return passed-in Connection.
    `CallableStatement` | `getNativeCallableStatement(CallableStatement cs)` Not able to unwrap: return passed-in CallableStatement.
    `PreparedStatement` | `getNativePreparedStatement(PreparedStatement ps)` Not able to unwrap: return passed-in PreparedStatement.
    `ResultSet` | `getNativeResultSet(ResultSet rs)` Not able to unwrap: return passed-in ResultSet.
    `Statement` | `getNativeStatement(Statement stmt)` Not able to unwrap: return passed-in Statement.
    `void` | `setCallableStatementType(Class<? extends CallableStatement> callableStatementType)` Set the vendor's CallableStatement type, e.g.
    `void` | `setConnectionType(Class<? extends Connection> connectionType)` Set the vendor's Connection type, e.g.
    `void` | `setPreparedStatementType(Class<? extends PreparedStatement> preparedStatementType)` Set the vendor's PreparedStatement type, e.g.
    `void` | `setResultSetType(Class<? extends ResultSet> resultSetType)` Set the vendor's ResultSet type, e.g.
    `void` | `setStatementType(Class<? extends Statement> statementType)` Set the vendor's Statement type, e.g.

    - ### Methods inherited from class org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter

      `getNativeConnection, getNativeConnectionFromStatement, isNativeConnectionNecessaryForNativeCallableStatements, isNativeConnectionNecessaryForNativePreparedStatements, isNativeConnectionNecessaryForNativeStatements`

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

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

- - ### Constructor Detail

    - #### Jdbc4NativeJdbcExtractor

          public Jdbc4NativeJdbcExtractor()

  - ### Method Detail

    - #### setConnectionType

          public void setConnectionType(Class<? extends Connection> connectionType)

      Set the vendor's Connection type, e.g. `oracle.jdbc.OracleConnection`.

    - #### setStatementType

          public void setStatementType(Class<? extends Statement> statementType)

      Set the vendor's Statement type, e.g. `oracle.jdbc.OracleStatement`.

    - #### setPreparedStatementType

          public void setPreparedStatementType(Class<? extends PreparedStatement> preparedStatementType)

      Set the vendor's PreparedStatement type, e.g. `oracle.jdbc.OraclePreparedStatement`.

    - #### setCallableStatementType

          public void setCallableStatementType(Class<? extends CallableStatement> callableStatementType)

      Set the vendor's CallableStatement type, e.g. `oracle.jdbc.OracleCallableStatement`.

    - #### setResultSetType

          public void setResultSetType(Class<? extends ResultSet> resultSetType)

      Set the vendor's ResultSet type, e.g. `oracle.jdbc.OracleResultSet`.

    - #### doGetNativeConnection

          protected Connection doGetNativeConnection(Connection con)
                                              throws SQLException

      Description copied from class: `NativeJdbcExtractorAdapter`
      Not able to unwrap: return passed-in Connection.
      Overrides:
        `doGetNativeConnection` in class `NativeJdbcExtractorAdapter`
      Throws:
        `SQLException`

    - #### getNativeStatement

          public Statement getNativeStatement(Statement stmt)
                                       throws SQLException

      Description copied from class: `NativeJdbcExtractorAdapter`
      Not able to unwrap: return passed-in Statement.
      Specified by:
        `getNativeStatement` in interface `NativeJdbcExtractor`
      Overrides:
        `getNativeStatement` in class `NativeJdbcExtractorAdapter`
      Parameters:
        `stmt` - the Statement handle, potentially wrapped by a connection pool
      Returns:
        the underlying native JDBC Statement, if possible; else, the original Statement
      Throws:
        `SQLException` - if thrown by JDBC methods

    - #### getNativePreparedStatement

          public PreparedStatement getNativePreparedStatement(PreparedStatement ps)
                                                       throws SQLException

      Description copied from class: `NativeJdbcExtractorAdapter`
      Not able to unwrap: return passed-in PreparedStatement.
      Specified by:
        `getNativePreparedStatement` in interface `NativeJdbcExtractor`
      Overrides:
        `getNativePreparedStatement` in class `NativeJdbcExtractorAdapter`
      Parameters:
        `ps` - the PreparedStatement handle, potentially wrapped by a connection pool
      Returns:
        the underlying native JDBC PreparedStatement, if possible; else, the original PreparedStatement
      Throws:
        `SQLException` - if thrown by JDBC methods

    - #### getNativeCallableStatement

          public CallableStatement getNativeCallableStatement(CallableStatement cs)
                                                       throws SQLException

      Description copied from class: `NativeJdbcExtractorAdapter`
      Not able to unwrap: return passed-in CallableStatement.
      Specified by:
        `getNativeCallableStatement` in interface `NativeJdbcExtractor`
      Overrides:
        `getNativeCallableStatement` in class `NativeJdbcExtractorAdapter`
      Parameters:
        `cs` - the CallableStatement handle, potentially wrapped by a connection pool
      Returns:
        the underlying native JDBC CallableStatement, if possible; else, the original CallableStatement
      Throws:
        `SQLException` - if thrown by JDBC methods

    - #### getNativeResultSet

          public ResultSet getNativeResultSet(ResultSet rs)
                                       throws SQLException

      Description copied from class: `NativeJdbcExtractorAdapter`
      Not able to unwrap: return passed-in ResultSet.
      Specified by:
        `getNativeResultSet` in interface `NativeJdbcExtractor`
      Overrides:
        `getNativeResultSet` in class `NativeJdbcExtractorAdapter`
      Parameters:
        `rs` - the ResultSet handle, potentially wrapped by a connection pool
      Returns:
        the underlying native JDBC ResultSet, if possible; else, the original ResultSet
      Throws:
        `SQLException` - if thrown by JDBC methods