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

    Constructors
    Constructor and Description
    `C3P0NativeJdbcExtractor()`

  - ### Method Summary

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