public abstract class NativeJdbcExtractorAdapter extends Object implements NativeJdbcExtractor
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.
getNativeConnection(java.sql.Connection),
getNativeConnectionFromStatement(java.sql.Statement),
ConnectionProxy| Constructor and Description |
|---|
NativeJdbcExtractorAdapter() |
| Modifier and Type | Method and Description |
|---|---|
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.
|
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. |
public boolean isNativeConnectionNecessaryForNativeStatements()
false by default.isNativeConnectionNecessaryForNativeStatements in interface NativeJdbcExtractorpublic boolean isNativeConnectionNecessaryForNativePreparedStatements()
false by default.isNativeConnectionNecessaryForNativePreparedStatements in interface NativeJdbcExtractorpublic boolean isNativeConnectionNecessaryForNativeCallableStatements()
false by default.isNativeConnectionNecessaryForNativeCallableStatements in interface NativeJdbcExtractorpublic Connection getNativeConnection(Connection con) throws SQLException
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.
getNativeConnection in interface NativeJdbcExtractorcon - the Connection handle, potentially wrapped by a connection poolSQLException - if thrown by JDBC methodsdoGetNativeConnection(java.sql.Connection),
ConnectionProxy,
DataSourceUtils.getTargetConnection(java.sql.Connection),
TransactionAwareDataSourceProxy,
LazyConnectionDataSourceProxyprotected Connection doGetNativeConnection(Connection con) throws SQLException
SQLExceptionpublic Connection getNativeConnectionFromStatement(Statement stmt) throws SQLException
getNativeConnectionFromStatement in interface NativeJdbcExtractorstmt - the Statement handle, potentially wrapped by a connection poolSQLException - if thrown by JDBC methodsgetNativeConnection(java.sql.Connection),
Statement.getConnection()public Statement getNativeStatement(Statement stmt) throws SQLException
getNativeStatement in interface NativeJdbcExtractorstmt - the Statement handle, potentially wrapped by a connection poolSQLException - if thrown by JDBC methodspublic PreparedStatement getNativePreparedStatement(PreparedStatement ps) throws SQLException
getNativePreparedStatement in interface NativeJdbcExtractorps - the PreparedStatement handle, potentially wrapped by a connection poolSQLException - if thrown by JDBC methodspublic CallableStatement getNativeCallableStatement(CallableStatement cs) throws SQLException
getNativeCallableStatement in interface NativeJdbcExtractorcs - the CallableStatement handle, potentially wrapped by a connection poolSQLException - if thrown by JDBC methodspublic ResultSet getNativeResultSet(ResultSet rs) throws SQLException
getNativeResultSet in interface NativeJdbcExtractorrs - the ResultSet handle, potentially wrapped by a connection poolSQLException - if thrown by JDBC methods