## org.springframework.jdbc.support.nativejdbc
Class C3P0NativeJdbcExtractor

    java.lang.Object
      org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter
          org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor

All Implemented Interfaces:
  NativeJdbcExtractor

    public class C3P0NativeJdbcExtractor

extends NativeJdbcExtractorAdapter

Implementation of the `NativeJdbcExtractor` interface for the C3P0 connection pool.

Returns underlying native Connections to application code instead of C3P0's wrapper implementations; unwraps the Connection for native Statements. The returned JDBC classes can then safely be cast, e.g. to `oracle.jdbc.OracleConnection`.

This NativeJdbcExtractor can be set just to allow working with a C3P0 DataSource: If a given object is not a C3P0 wrapper, it will be returned as-is.

Note that this class requires C3P0 0.8.5 or later; for earlier C3P0 versions, use SimpleNativeJdbcExtractor (which won't work for C3P0 0.8.5 or later).

Since:
  1.1.5
Author:
  Juergen Hoeller
See Also:
  `C3P0ProxyConnection.rawConnectionOperation(java.lang.reflect.Method, java.lang.Object, java.lang.Object[])`, `SimpleNativeJdbcExtractor`

Constructor Summary
`C3P0NativeJdbcExtractor()`

Method Summary
`protected Connection` `doGetNativeConnection(Connection con)` Retrieve the Connection via C3P0's `rawConnectionOperation` API, using the `getRawConnection` as callback to get access to the raw Connection (which is otherwise not directly supported by C3P0).
`static Connection` `getRawConnection(Connection con)` This method is not meant to be used directly; it rather serves as callback method for C3P0's "rawConnectionOperation" API.
`boolean` `isNativeConnectionNecessaryForNativeCallableStatements()` Return `false` by default.
`boolean` `isNativeConnectionNecessaryForNativePreparedStatements()` Return `false` by default.
`boolean` `isNativeConnectionNecessaryForNativeStatements()` Return `false` by default.

Methods inherited from class org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter
`getNativeCallableStatement, getNativeConnection, getNativeConnectionFromStatement, getNativePreparedStatement, getNativeResultSet, getNativeStatement`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### C3P0NativeJdbcExtractor

    public C3P0NativeJdbcExtractor()

Method Detail

### getRawConnection

    public static Connection getRawConnection(Connection con)

  This method is not meant to be used directly; it rather serves as callback method for C3P0's "rawConnectionOperation" API.

  Parameters:
    `con` - a native Connection handle
  Returns:
    the native Connection handle, as-is

### isNativeConnectionNecessaryForNativeStatements

    public boolean isNativeConnectionNecessaryForNativeStatements()

  Description copied from class: `NativeJdbcExtractorAdapter`
  Return `false` by default.

  Specified by:
    `isNativeConnectionNecessaryForNativeStatements` in interface `NativeJdbcExtractor`
  Overrides:
    `isNativeConnectionNecessaryForNativeStatements` in class `NativeJdbcExtractorAdapter`

### isNativeConnectionNecessaryForNativePreparedStatements

    public boolean isNativeConnectionNecessaryForNativePreparedStatements()

  Description copied from class: `NativeJdbcExtractorAdapter`
  Return `false` by default.

  Specified by:
    `isNativeConnectionNecessaryForNativePreparedStatements` in interface `NativeJdbcExtractor`
  Overrides:
    `isNativeConnectionNecessaryForNativePreparedStatements` in class `NativeJdbcExtractorAdapter`

### isNativeConnectionNecessaryForNativeCallableStatements

    public boolean isNativeConnectionNecessaryForNativeCallableStatements()

  Description copied from class: `NativeJdbcExtractorAdapter`
  Return `false` by default.

  Specified by:
    `isNativeConnectionNecessaryForNativeCallableStatements` in interface `NativeJdbcExtractor`
  Overrides:
    `isNativeConnectionNecessaryForNativeCallableStatements` in class `NativeJdbcExtractorAdapter`

### doGetNativeConnection

    protected Connection doGetNativeConnection(Connection con)
                                        throws SQLException

  Retrieve the Connection via C3P0's `rawConnectionOperation` API, using the `getRawConnection` as callback to get access to the raw Connection (which is otherwise not directly supported by C3P0).

  Overrides:
    `doGetNativeConnection` in class `NativeJdbcExtractorAdapter`
  Throws:
    `SQLException`
  See Also:
    `getRawConnection(java.sql.Connection)`