Overview | Package | Class | Tree | Deprecated | Index | Help
| Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

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

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

All Implemented Interfaces:
  NativeJdbcExtractor

Direct Known Subclasses:
  C3P0NativeJdbcExtractor, CommonsDbcpNativeJdbcExtractor, JBossNativeJdbcExtractor, Jdbc4NativeJdbcExtractor, SimpleNativeJdbcExtractor, WebLogicNativeJdbcExtractor, WebSphereNativeJdbcExtractor

    public abstract class NativeJdbcExtractorAdapter

extends java.lang.Object
implements NativeJdbcExtractor

Abstract adapter class for the `NativeJdbcExtractor` interface, for simplified implementation of basic extractors. Basically returns the passed-in JDBC objects on all methods.

`getNativeConnection` checks for a ConnectionProxy chain, for example from a TransactionAwareDataSourceProxy, before delegating to `doGetNativeConnection` for actual unwrapping. You can override either of the two for a specific connection pool, but the latter is recommended to participate in ConnectionProxy unwrapping.

`getNativeConnection` also applies a fallback if the first native extraction process failed, that is, returned the same Connection as passed in. It assumes that some additional proxying is going in this case: Hence, it retrieves the underlying native Connection from the DatabaseMetaData via `conHandle.getMetaData().getConnection()` and retries the native extraction process based on that Connection handle. This works, for example, for the Connection proxies exposed by Hibernate 3.1's `Session.connection()`.

The `getNativeConnectionFromStatement` method is implemented to simply delegate to `getNativeConnection` with the Statement's Connection. This is what most extractor implementations will stick to, unless there's a more efficient version for a specific pool.

Since:
  1.1
Author:
  Juergen Hoeller
See Also:
  `getNativeConnection(java.sql.Connection)`, `getNativeConnectionFromStatement(java.sql.Statement)`, `ConnectionProxy`

Constructor Summary
`NativeJdbcExtractorAdapter()`

Method Summary
`protected java.sql.Connection` | `doGetNativeConnection(java.sql.Connection con)` Not able to unwrap: return passed-in Connection.
`java.sql.CallableStatement` | `getNativeCallableStatement(java.sql.CallableStatement cs)` Not able to unwrap: return passed-in CallableStatement.
`java.sql.Connection` | `getNativeConnection(java.sql.Connection con)` Check for a ConnectionProxy chain, then delegate to doGetNativeConnection.
`java.sql.Connection` | `getNativeConnectionFromStatement(java.sql.Statement stmt)` Retrieve the Connection via the Statement's Connection.
`java.sql.PreparedStatement` | `getNativePreparedStatement(java.sql.PreparedStatement ps)` Not able to unwrap: return passed-in PreparedStatement.
`java.sql.ResultSet` | `getNativeResultSet(java.sql.ResultSet rs)` Not able to unwrap: return passed-in ResultSet.
`java.sql.Statement` | `getNativeStatement(java.sql.Statement stmt)` Not able to unwrap: return passed-in Statement.
`boolean` | `isNativeConnectionNecessaryForNativeCallableStatements()` Return `false` by default.
`boolean` | `isNativeConnectionNecessaryForNativePreparedStatements()` Return `false` by default.
`boolean` | `isNativeConnectionNecessaryForNativeStatements()` Return `false` by default.

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

Constructor Detail

### NativeJdbcExtractorAdapter

    public NativeJdbcExtractorAdapter()

Method Detail

### isNativeConnectionNecessaryForNativeStatements

    public boolean isNativeConnectionNecessaryForNativeStatements()

  Return `false` by default.

  Specified by:
    `isNativeConnectionNecessaryForNativeStatements` in interface `NativeJdbcExtractor`

### isNativeConnectionNecessaryForNativePreparedStatements

    public boolean isNativeConnectionNecessaryForNativePreparedStatements()

  Return `false` by default.

  Specified by:
    `isNativeConnectionNecessaryForNativePreparedStatements` in interface `NativeJdbcExtractor`

### isNativeConnectionNecessaryForNativeCallableStatements

    public boolean isNativeConnectionNecessaryForNativeCallableStatements()

  Return `false` by default.

  Specified by:
    `isNativeConnectionNecessaryForNativeCallableStatements` in interface `NativeJdbcExtractor`

### getNativeConnection

    public java.sql.Connection getNativeConnection(java.sql.Connection con)
                                            throws java.sql.SQLException

  Check for a ConnectionProxy chain, then delegate to doGetNativeConnection.

  ConnectionProxy is used by Spring's TransactionAwareDataSourceProxy and LazyConnectionDataSourceProxy. The target connection behind it is typically one from a local connection pool, to be unwrapped by the doGetNativeConnection implementation of a concrete subclass.

  Specified by:
    `getNativeConnection` in interface `NativeJdbcExtractor`
  Parameters:
    `con` - the Connection handle, potentially wrapped by a connection pool
  Returns:
    the underlying native JDBC Connection, if possible; else, the original Connection
  Throws:
    `java.sql.SQLException` - if thrown by JDBC methods
  See Also:
    `doGetNativeConnection(java.sql.Connection)`, `ConnectionProxy`, `DataSourceUtils.getTargetConnection(java.sql.Connection)`, `TransactionAwareDataSourceProxy`, `LazyConnectionDataSourceProxy`

### doGetNativeConnection

    protected java.sql.Connection doGetNativeConnection(java.sql.Connection con)
                                                 throws java.sql.SQLException

  Not able to unwrap: return passed-in Connection.

  Throws:
    `java.sql.SQLException`

### getNativeConnectionFromStatement

    public java.sql.Connection getNativeConnectionFromStatement(java.sql.Statement stmt)
                                                         throws java.sql.SQLException

  Retrieve the Connection via the Statement's Connection.

  Specified by:
    `getNativeConnectionFromStatement` in interface `NativeJdbcExtractor`
  Parameters:
    `stmt` - the Statement handle, potentially wrapped by a connection pool
  Returns:
    the underlying native JDBC Connection, if possible; else, the original Connection
  Throws:
    `java.sql.SQLException` - if thrown by JDBC methods
  See Also:
    `getNativeConnection(java.sql.Connection)`, `Statement.getConnection()`

### getNativeStatement

    public java.sql.Statement getNativeStatement(java.sql.Statement stmt)
                                          throws java.sql.SQLException

  Not able to unwrap: return passed-in Statement.

  Specified by:
    `getNativeStatement` in interface `NativeJdbcExtractor`
  Parameters:
    `stmt` - the Statement handle, potentially wrapped by a connection pool
  Returns:
    the underlying native JDBC Statement, if possible; else, the original Statement
  Throws:
    `java.sql.SQLException` - if thrown by JDBC methods

### getNativePreparedStatement

    public java.sql.PreparedStatement getNativePreparedStatement(java.sql.PreparedStatement ps)
                                                          throws java.sql.SQLException

  Not able to unwrap: return passed-in PreparedStatement.

  Specified by:
    `getNativePreparedStatement` in interface `NativeJdbcExtractor`
  Parameters:
    `ps` - the PreparedStatement handle, potentially wrapped by a connection pool
  Returns:
    the underlying native JDBC PreparedStatement, if possible; else, the original PreparedStatement
  Throws:
    `java.sql.SQLException` - if thrown by JDBC methods

### getNativeCallableStatement

    public java.sql.CallableStatement getNativeCallableStatement(java.sql.CallableStatement cs)
                                                          throws java.sql.SQLException

  Not able to unwrap: return passed-in CallableStatement.

  Specified by:
    `getNativeCallableStatement` in interface `NativeJdbcExtractor`
  Parameters:
    `cs` - the CallableStatement handle, potentially wrapped by a connection pool
  Returns:
    the underlying native JDBC CallableStatement, if possible; else, the original CallableStatement
  Throws:
    `java.sql.SQLException` - if thrown by JDBC methods

### getNativeResultSet

    public java.sql.ResultSet getNativeResultSet(java.sql.ResultSet rs)
                                          throws java.sql.SQLException

  Not able to unwrap: return passed-in ResultSet.

  Specified by:
    `getNativeResultSet` in interface `NativeJdbcExtractor`
  Parameters:
    `rs` - the ResultSet handle, potentially wrapped by a connection pool
  Returns:
    the underlying native JDBC ResultSet, if possible; else, the original ResultSet
  Throws:
    `java.sql.SQLException` - if thrown by JDBC methods

Overview | Package | Class | Tree | Deprecated | Index | Help
| Spring Framework
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD