|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor
public class SimpleNativeJdbcExtractor
Simple implementation of the NativeJdbcExtractor interface.
Assumes a pool that wraps Connection handles but not DatabaseMetaData:
In this case, the underlying native Connection can be retrieved by simply
calling conHandle.getMetaData().getConnection()
.
All other JDBC objects will be returned as passed in.
This extractor should work with any pool that does not wrap DatabaseMetaData,
and will also work with any plain JDBC driver. Note that a pool can still wrap
Statements, PreparedStatements, etc: The only requirement of this extractor is
that java.sql.DatabaseMetaData does not get wrapped, returning the native
Connection of the JDBC driver on metaData.getConnection()
.
Customize this extractor by setting the "nativeConnectionNecessaryForXxx" flags accordingly: If Statements, PreparedStatements, and/or CallableStatements are wrapped by your pool, set the corresponding "nativeConnectionNecessaryForXxx" flags to true. If none of the statement types is wrapped - or you solely need Connection unwrapping in the first place -, the defaults are fine.
SimpleNativeJdbcExtractor is a common choice for use with OracleLobHandler,
which just needs Connection unwrapping via the
getNativeConnectionFromStatement
method. This usage will work
with almost any connection pool. Known to work are, for example:
For full usage with JdbcTemplate, i.e. to also provide Statement unwrapping:
DatabaseMetaData.getConnection()
,
NativeJdbcExtractorAdapter.getNativeConnection(java.sql.Connection)
,
setNativeConnectionNecessaryForNativeStatements(boolean)
,
setNativeConnectionNecessaryForNativePreparedStatements(boolean)
,
setNativeConnectionNecessaryForNativeCallableStatements(boolean)
,
CommonsDbcpNativeJdbcExtractor
,
JBossNativeJdbcExtractor
,
JdbcTemplate.setNativeJdbcExtractor(org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor)
,
OracleLobHandler.setNativeJdbcExtractor(org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractor)
Field Summary | |
---|---|
protected org.apache.commons.logging.Log |
logger
|
Constructor Summary | |
---|---|
SimpleNativeJdbcExtractor()
|
Method Summary | |
---|---|
protected Connection |
doGetNativeConnection(Connection con)
Retrieve the Connection via the DatabaseMetaData object, which will result in the native JDBC Connection with many connection pools. |
boolean |
isNativeConnectionNecessaryForNativeCallableStatements()
Return false by default. |
boolean |
isNativeConnectionNecessaryForNativePreparedStatements()
Return false by default. |
boolean |
isNativeConnectionNecessaryForNativeStatements()
Return false by default. |
void |
setNativeConnectionNecessaryForNativeCallableStatements(boolean nativeConnectionNecessary)
Set whether it is necessary to work on the native Connection to receive native CallableStatements. |
void |
setNativeConnectionNecessaryForNativePreparedStatements(boolean nativeConnectionNecessary)
Set whether it is necessary to work on the native Connection to receive native PreparedStatements. |
void |
setNativeConnectionNecessaryForNativeStatements(boolean nativeConnectionNecessaryForNativeStatements)
Set whether it is necessary to work on the native Connection to receive native Statements. |
Methods inherited from class org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter |
---|
getNativeCallableStatement, getNativeConnection, getNativeConnectionFromStatement, getNativePreparedStatement, getNativeResultSet, getNativeStatement |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected final org.apache.commons.logging.Log logger
Constructor Detail |
---|
public SimpleNativeJdbcExtractor()
Method Detail |
---|
public void setNativeConnectionNecessaryForNativeStatements(boolean nativeConnectionNecessaryForNativeStatements)
This makes sense if you need to work with native Statements from a pool that does not allow to extract the native JDBC objects from its wrappers but returns the native Connection on DatabaseMetaData.getConnection.
The standard SimpleNativeJdbcExtractor is unable to unwrap statements, so set this to true if your connection pool wraps Statements.
Connection.createStatement()
,
DatabaseMetaData.getConnection()
public boolean isNativeConnectionNecessaryForNativeStatements()
NativeJdbcExtractorAdapter
false
by default.
isNativeConnectionNecessaryForNativeStatements
in interface NativeJdbcExtractor
isNativeConnectionNecessaryForNativeStatements
in class NativeJdbcExtractorAdapter
public void setNativeConnectionNecessaryForNativePreparedStatements(boolean nativeConnectionNecessary)
This makes sense if you need to work with native PreparedStatements from a pool that does not allow to extract the native JDBC objects from its wrappers but returns the native Connection on Statement.getConnection.
The standard SimpleNativeJdbcExtractor is unable to unwrap statements, so set this to true if your connection pool wraps PreparedStatements.
Connection.prepareStatement(java.lang.String)
,
DatabaseMetaData.getConnection()
public boolean isNativeConnectionNecessaryForNativePreparedStatements()
NativeJdbcExtractorAdapter
false
by default.
isNativeConnectionNecessaryForNativePreparedStatements
in interface NativeJdbcExtractor
isNativeConnectionNecessaryForNativePreparedStatements
in class NativeJdbcExtractorAdapter
public void setNativeConnectionNecessaryForNativeCallableStatements(boolean nativeConnectionNecessary)
This makes sense if you need to work with native CallableStatements from a pool that does not allow to extract the native JDBC objects from its wrappers but returns the native Connection on Statement.getConnection.
The standard SimpleNativeJdbcExtractor is unable to unwrap statements, so set this to true if your connection pool wraps CallableStatements.
Connection.prepareCall(java.lang.String)
,
DatabaseMetaData.getConnection()
public boolean isNativeConnectionNecessaryForNativeCallableStatements()
NativeJdbcExtractorAdapter
false
by default.
isNativeConnectionNecessaryForNativeCallableStatements
in interface NativeJdbcExtractor
isNativeConnectionNecessaryForNativeCallableStatements
in class NativeJdbcExtractorAdapter
protected Connection doGetNativeConnection(Connection con) throws SQLException
doGetNativeConnection
in class NativeJdbcExtractorAdapter
SQLException
DatabaseMetaData.getConnection()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |