public abstract class

NativeJdbcExtractorAdapter

extends Object
implements NativeJdbcExtractor
java.lang.Object
   ↳ org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

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.

Summary

Public Constructors
NativeJdbcExtractorAdapter()
Public Methods
CallableStatement getNativeCallableStatement(CallableStatement cs)
Not able to unwrap: return passed-in CallableStatement.
Connection getNativeConnection(Connection con)
Check for a ConnectionProxy chain, then delegate to doGetNativeConnection.
Connection getNativeConnectionFromStatement(Statement stmt)
Retrieve the Connection via the Statement's Connection.
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.
boolean isNativeConnectionNecessaryForNativeCallableStatements()
Return false by default.
boolean isNativeConnectionNecessaryForNativePreparedStatements()
Return false by default.
boolean isNativeConnectionNecessaryForNativeStatements()
Return false by default.
Protected Methods
Connection doGetNativeConnection(Connection con)
Not able to unwrap: return passed-in Connection.
[Expand]
Inherited Methods
From class java.lang.Object
From interface org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor

Public Constructors

public NativeJdbcExtractorAdapter ()

Public Methods

public CallableStatement getNativeCallableStatement (CallableStatement cs)

Not able to unwrap: return passed-in CallableStatement.

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

public Connection getNativeConnection (Connection con)

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.

Parameters
con the Connection handle, potentially wrapped by a connection pool
Returns
  • the underlying native JDBC Connection, if possible; else, the original Connection
Throws
SQLException

public Connection getNativeConnectionFromStatement (Statement stmt)

Retrieve the Connection via the Statement's Connection.

Parameters
stmt the Statement handle, potentially wrapped by a connection pool
Returns
  • the underlying native JDBC Connection, if possible; else, the original Connection
Throws
SQLException

public PreparedStatement getNativePreparedStatement (PreparedStatement ps)

Not able to unwrap: return passed-in PreparedStatement.

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

public ResultSet getNativeResultSet (ResultSet rs)

Not able to unwrap: return passed-in ResultSet.

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

public Statement getNativeStatement (Statement stmt)

Not able to unwrap: return passed-in Statement.

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

public boolean isNativeConnectionNecessaryForNativeCallableStatements ()

Return false by default.

public boolean isNativeConnectionNecessaryForNativePreparedStatements ()

Return false by default.

public boolean isNativeConnectionNecessaryForNativeStatements ()

Return false by default.

Protected Methods

protected Connection doGetNativeConnection (Connection con)

Not able to unwrap: return passed-in Connection.

Throws
SQLException