接口 NativeJdbcExtractor
- 所有已知实现类:
C3P0NativeJdbcExtractor
,CommonsDbcpNativeJdbcExtractor
,JBossNativeJdbcExtractor
,Jdbc4NativeJdbcExtractor
,NativeJdbcExtractorAdapter
,OracleJdbc4NativeJdbcExtractor
,SimpleNativeJdbcExtractor
,WebLogicNativeJdbcExtractor
,WebSphereNativeJdbcExtractor
public interface NativeJdbcExtractor
Interface for extracting native JDBC objects from wrapped objects coming from connection pools. This is necessary to allow for casting to native implementations likeOracleConnection
orOracleResultSet
in application code, for example to create Blobs or to access vendor-specific features.Note: Setting a custom
NativeJdbcExtractor
is just necessary if you intend to cast to database-specific implementations likeOracleConnection
orOracleResultSet
. Otherwise, any wrapped JDBC object will be fine, with no need for unwrapping.Note: To be able to support any pool's strategy of native ResultSet wrapping, it is advisable to get both the native Statement and the native ResultSet via this extractor. Some pools just allow to unwrap the Statement, some just to unwrap the ResultSet - the above strategy will cover both. It is typically not necessary to unwrap the Connection to retrieve a native ResultSet.
When working with a simple connection pool that wraps Connections but not Statements, a
SimpleNativeJdbcExtractor
is often sufficient. However, some pools (like Apache's Commons DBCP) wrap all JDBC objects that they return: Therefore, you need to use a specificNativeJdbcExtractor
(likeCommonsDbcpNativeJdbcExtractor
) with them.JdbcTemplate
can properly apply aNativeJdbcExtractor
if specified, unwrapping all JDBC objects that it creates. Note that this is just necessary if you intend to cast to native implementations in your data access code.OracleLobHandler
, the Oracle-specific implementation of Spring'sLobHandler
interface, requires aNativeJdbcExtractor
for obtaining the nativeOracleConnection
. This is also necessary for other Oracle-specific features that you may want to leverage in your applications, such as Oracle InterMedia.- 从以下版本开始:
- 25.08.2003
- 作者:
- Juergen Hoeller
- 另请参阅:
SimpleNativeJdbcExtractor
,CommonsDbcpNativeJdbcExtractor
,JdbcTemplate.setNativeJdbcExtractor(org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor)
,OracleLobHandler.setNativeJdbcExtractor(org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor)
方法概要
所有方法 实例方法 抽象方法 修饰符和类型 方法 说明 CallableStatement
getNativeCallableStatement(CallableStatement cs)
Retrieve the underlying native JDBC CallableStatement for the given statement.Connection
getNativeConnection(Connection con)
Retrieve the underlying native JDBC Connection for the given Connection.Connection
getNativeConnectionFromStatement(Statement stmt)
Retrieve the underlying native JDBC Connection for the given Statement.PreparedStatement
getNativePreparedStatement(PreparedStatement ps)
Retrieve the underlying native JDBC PreparedStatement for the given statement.ResultSet
getNativeResultSet(ResultSet rs)
Retrieve the underlying native JDBC ResultSet for the given statement.Statement
getNativeStatement(Statement stmt)
Retrieve the underlying native JDBC Statement for the given Statement.boolean
isNativeConnectionNecessaryForNativeCallableStatements()
Return whether it is necessary to work on the native Connection to receive native CallableStatements.boolean
isNativeConnectionNecessaryForNativePreparedStatements()
Return whether it is necessary to work on the native Connection to receive native PreparedStatements.boolean
isNativeConnectionNecessaryForNativeStatements()
Return whether it is necessary to work on the native Connection to receive native Statements.
方法详细资料
isNativeConnectionNecessaryForNativeStatements
boolean isNativeConnectionNecessaryForNativeStatements()
Return whether it is necessary to work on the native Connection to receive native Statements.This should be true if the connection pool does not allow to extract the native JDBC objects from its Statement wrapper but supports a way to retrieve the native JDBC Connection. This way, applications can still receive native Statements and ResultSet via working on the native JDBC Connection.
isNativeConnectionNecessaryForNativePreparedStatements
boolean isNativeConnectionNecessaryForNativePreparedStatements()
Return whether it is necessary to work on the native Connection to receive native PreparedStatements.This should be true if the connection pool does not allow to extract the native JDBC objects from its PreparedStatement wrappers but supports a way to retrieve the native JDBC Connection. This way, applications can still receive native Statements and ResultSet via working on the native JDBC Connection.
isNativeConnectionNecessaryForNativeCallableStatements
boolean isNativeConnectionNecessaryForNativeCallableStatements()
Return whether it is necessary to work on the native Connection to receive native CallableStatements.This should be true if the connection pool does not allow to extract the native JDBC objects from its CallableStatement wrappers but supports a way to retrieve the native JDBC Connection. This way, applications can still receive native Statements and ResultSet via working on the native JDBC Connection.
getNativeConnection
Connection getNativeConnection(Connection con) throws SQLException
Retrieve the underlying native JDBC Connection for the given Connection. Supposed to return the given Connection if not capable of unwrapping.- 参数:
con
- the Connection handle, potentially wrapped by a connection pool- 返回:
- the underlying native JDBC Connection, if possible; else, the original Connection
- 抛出:
SQLException
- if thrown by JDBC methods
getNativeConnectionFromStatement
Connection getNativeConnectionFromStatement(Statement stmt) throws SQLException
Retrieve the underlying native JDBC Connection for the given Statement. Supposed to return theStatement.getConnection()
if not capable of unwrapping.Having this extra method allows for more efficient unwrapping if data access code already has a Statement.
Statement.getConnection()
often returns the native JDBC Connection even if the Statement itself is wrapped by a pool.- 参数:
stmt
- the Statement handle, potentially wrapped by a connection pool- 返回:
- the underlying native JDBC Connection, if possible; else, the original Connection
- 抛出:
SQLException
- if thrown by JDBC methods- 另请参阅:
Statement.getConnection()
getNativeStatement
Statement getNativeStatement(Statement stmt) throws SQLException
Retrieve the underlying native JDBC Statement for the given Statement. Supposed to return the given Statement if not capable of unwrapping.- 参数:
stmt
- the Statement handle, potentially wrapped by a connection pool- 返回:
- the underlying native JDBC Statement, if possible; else, the original Statement
- 抛出:
SQLException
- if thrown by JDBC methods
getNativePreparedStatement
PreparedStatement getNativePreparedStatement(PreparedStatement ps) throws SQLException
Retrieve the underlying native JDBC PreparedStatement for the given statement. Supposed to return the given PreparedStatement if not capable of unwrapping.- 参数:
ps
- the PreparedStatement handle, potentially wrapped by a connection pool- 返回:
- the underlying native JDBC PreparedStatement, if possible; else, the original PreparedStatement
- 抛出:
SQLException
- if thrown by JDBC methods
getNativeCallableStatement
CallableStatement getNativeCallableStatement(CallableStatement cs) throws SQLException
Retrieve the underlying native JDBC CallableStatement for the given statement. Supposed to return the given CallableStatement if not capable of unwrapping.- 参数:
cs
- the CallableStatement handle, potentially wrapped by a connection pool- 返回:
- the underlying native JDBC CallableStatement, if possible; else, the original CallableStatement
- 抛出:
SQLException
- if thrown by JDBC methods
getNativeResultSet
ResultSet getNativeResultSet(ResultSet rs) throws SQLException
Retrieve the underlying native JDBC ResultSet for the given statement. Supposed to return the given ResultSet if not capable of unwrapping.- 参数:
rs
- the ResultSet handle, potentially wrapped by a connection pool- 返回:
- the underlying native JDBC ResultSet, if possible; else, the original ResultSet
- 抛出:
SQLException
- if thrown by JDBC methods