## 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
`Jdbc4NativeJdbcExtractor()`

Method Summary
`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