Sometimes you need to access vendor specific JDBC methods that differ from the standard JDBC API. This can be problematic if you are running in an application server or with a DataSource
that wraps the Connection
, Statement
and ResultSet
objects with its own wrapper objects. To gain access to the native objects you can configure yourJdbcTemplate
or OracleLobHandler
with a NativeJdbcExtractor
.
翻译:
有时候,你需要访问特定于供应商的JDBC方法不同于标准JDBC API。这可能会出现问题,如果你正在运行一个应用程序服务器或一个DataSource包装的连接,Statement和ResultSet对象与自己的包装对象。要获得本地对象,你可以配置你JdbcTemplate或OracleLobHandler的一个NativeJdbcExtractor。
The NativeJdbcExtractor
comes in a variety of flavors to match your execution environment:
-
SimpleNativeJdbcExtractor
-
C3P0NativeJdbcExtractor
-
CommonsDbcpNativeJdbcExtractor
-
JBossNativeJdbcExtractor
-
WebLogicNativeJdbcExtractor
-
WebSphereNativeJdbcExtractor
-
XAPoolNativeJdbcExtractor
Usually the SimpleNativeJdbcExtractor
is sufficient for unwrapping a Connection
object in most environments. See the Javadocs for more details.
spring 配置文件如下:
<!-- nativeJdbcExtractor 和 oracleLobHandler Bean 都设置为 lazy-init="true",这是因为 -->
<!-- nativeJdbcExtractor 需要通过运行期的反射机制获取底层的 JDBC 对象, -->
<!-- 所以需要避免在 Spring 容器启动时就实例化这两个Bean。 -->
<bean id="nativeJdbcExtractor"class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor" lazy-init="true" /> <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"> <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"></property> </bean>
<!-- 我的实现类,因为我用的是C3P0 连接池方式,配置的nativejdbcextractor是C3P0 。 -->
<bean id="simpleWriterBlob" class="com.ww.jdbc.writer.blob.SimpleWriterBlob"> <property name="dataSource" ref="dataSource"></property> <property name="lobHandler" ref="oracleLobHandler"></property> </bean>
相关推荐
在IT行业中,Spring框架是Java开发中的重要工具,特别是对于企业级应用的开发。Spring JDBC模块是Spring框架的一部分,它提供了对JDBC(Java Database Connectivity)的高级抽象,简化了数据库操作。...
<bean id="nativeJdbcExtractor" lazy-init="true" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"/> ``` 3. **事务管理** 对CLOB字段的操作通常涉及数据库事务,因此需要在...
<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor" lazy-init="true"/> <property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"/> `...
<property name="nativeJdbcExtractor" ref="nativeJdbcExtractor"> <property name="lobHandler"><ref bean="oracleLobHandler" /> <property name="sessionFactory" ref="sessionFactory"></property> `...
在获取到连接后,`JdbcTemplate`可能需要对连接进行特殊处理,如使用`nativeJdbcExtractor`获取原生的数据库连接,或者创建一个关闭抑制的连接代理,以准备返回的Statement。 3. **异常处理**: 当在数据库操作中...
<bean id="C3PONativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.C3P0NativeJdbcExtractor" lazy-init="true"/> ``` 这里的关键在于配置了`lobHandler` Bean来处理CLOB和BLOB类型的字段。...
JdbcTemplate在内部首先通过`DataSourceUtils.getConnection`获取数据库连接,并可能对连接进行一些特殊处理,例如如果存在`NativeJdbcExtractor`,则会尝试获取原生的JDBC连接,或者创建一个代理连接以支持...
首先,必须定义一个能够从连接池中抽取出本地数据库JDBC对象(如OracleConnection,OracleResultSet等)的抽取器:nativeJdbcExtractor,这样才可以执行一些特定数据库的操作。对于那些仅封装了Connection而未包括...
C3P0NativeJdbcExtractor CachedIntrospectionResults CachingDestinationResolver CachingMapDecorator CallableStatementCallback CallableStatementCreator CallableStatementCreatorFactory ...
这部分通过`NativeJdbcExtractor`实现。 3. **执行回调逻辑**:调用传入的`ConnectionCallback`对象的`doInConnection`方法,执行用户自定义的数据库操作逻辑。 4. **异常处理**:如果执行过程中发生`SQLException`...
Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................
NativeJdbcExtractor 11.4. JDBC批量操作 11.4.1. 使用JdbcTemplate进行批量操作 11.4.2. 使用SimpleJdbcTemplate进行批量操作 11.5. 通过使用SimpleJdbc类简化JDBC操作 11.5.1. 使用SimpleJdbcInsert插入数据...
NativeJdbcExtractor 11.4. JDBC批量操作 11.4.1. 使用JdbcTemplate进行批量操作 11.4.2. 使用SimpleJdbcTemplate进行批量操作 11.5. 通过使用SimpleJdbc类简化JDBC操作 11.5.1. 使用SimpleJdbcInsert插入数据...
Not Using Commons Logging ................................................................... 12 Using SLF4J ..............................................................................................