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 NativeJdbcExtractor
public boolean isNativeConnectionNecessaryForNativePreparedStatements()
false
by default.isNativeConnectionNecessaryForNativePreparedStatements
in interface NativeJdbcExtractor
public boolean isNativeConnectionNecessaryForNativeCallableStatements()
false
by default.isNativeConnectionNecessaryForNativeCallableStatements
in interface NativeJdbcExtractor
public 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 NativeJdbcExtractor
con
- the Connection handle, potentially wrapped by a connection poolSQLException
- if thrown by JDBC methodsdoGetNativeConnection(java.sql.Connection)
,
ConnectionProxy
,
DataSourceUtils.getTargetConnection(java.sql.Connection)
,
TransactionAwareDataSourceProxy
,
LazyConnectionDataSourceProxy
protected Connection doGetNativeConnection(Connection con) throws SQLException
SQLException
public Connection getNativeConnectionFromStatement(Statement stmt) throws SQLException
getNativeConnectionFromStatement
in interface NativeJdbcExtractor
stmt
- 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 NativeJdbcExtractor
stmt
- the Statement handle, potentially wrapped by a connection poolSQLException
- if thrown by JDBC methodspublic PreparedStatement getNativePreparedStatement(PreparedStatement ps) throws SQLException
getNativePreparedStatement
in interface NativeJdbcExtractor
ps
- the PreparedStatement handle, potentially wrapped by a connection poolSQLException
- if thrown by JDBC methodspublic CallableStatement getNativeCallableStatement(CallableStatement cs) throws SQLException
getNativeCallableStatement
in interface NativeJdbcExtractor
cs
- the CallableStatement handle, potentially wrapped by a connection poolSQLException
- if thrown by JDBC methodspublic ResultSet getNativeResultSet(ResultSet rs) throws SQLException
getNativeResultSet
in interface NativeJdbcExtractor
rs
- the ResultSet handle, potentially wrapped by a connection poolSQLException
- if thrown by JDBC methods