为什么使用NativeJdbcExtractor
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>
------------另一篇转载----------------------------------
近来对一个项目进行维护
发现其之前用的是WebSphere,我准备将其更改到Tomcat上
于是悲剧开始上演。各种配置,各种报错。
createBeanException
原来是使用的WebSphereNativeJdbcExtractor现改为其它连接方式,则需要更改。
详细参考:
在spring里 插入 BLOB字段
kp.setContent(content.getBytes());
方法 :hibernate saveOrUpdate
报
Caused by: java.lang.ClassNotFoundException: oracle.sql.BLOB。
使用tomcat 没问题。
可服务器改为 WebSphere .就报错。
把Spring内置提供的NativeJdbcExtractor转换器 改了一下,结果:问题解决。
———————————————————————————————————————————————————————
总结如下:
1、对于我们的工程:
在发布环境中,要将nativeJdbcExtractor 换成 org.springframework.jdbc.support.nativejdbc.WebSphereNativeJdbcExtractor
留意log4j日志,此时的blob字段的java类型为oracle.sql.Blob
2、Spring内置提供的NativeJdbcExtractor转换器有:
C3P0NativeJdbcExtractor
CommonsDbcpNativeJdbcExtractor
JBossNativeJdbcExtractor
NativeJdbcExtractor
NativeJdbcExtractorAdapter
SimpleNativeJdbcExtractor
WebLogicNativeJdbcExtractor
WebSphereNativeJdbcExtractor
XAPoolNativeJdbcExtractor
要根据不同服务器及时修改,以免浪费大量时间。
位于org\springframework\jdbc\support\nativejdbc下
为什么使用NativeJdbcExtractor相关推荐
- plsql执行command命令控制台出现乱码_设计模式系列 — 命令模式
点赞再看,养成习惯,公众号搜一搜[一角钱技术]关注更多原创技术文章.本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 23种设计模式速记 单例(sin ...
- SpringMVC+Hibernate+Junit4+json基本框架近乎0配置
公司是做APP开发的,须要后台来提供接口,于是乎,这个任务就交给我,经过重复的尝试,学习和參考别人的demo,最终搭出自己还算惬意的框架.SpringMVC+Sping3+Hibernate4+Jun ...
- 工作中技术学习总结-初版
公司项目框架SSH,使用工作流引擎activiti-engine,公司内部框架封装:表单框架.数据库对应实体框架.自定义标签.流程配置框架:另外吐槽,公司对SSH框架应用不太深入! 目录: JSP a ...
- spring jdbctemplate源码跟踪
闲着没事,看看源码也是一种乐趣! java操作数据库的基本步骤都是类似的: 1. 建立数据库连接 2. 创建Connection 3. 创建statement或者preparedStateement ...
- spring源码分析之spring-jdbc模块详解
0 概述 Spring将替我们完成所有使用JDBC API进行开发的单调乏味的.底层细节处理工作.下表描述了哪些是spring帮助我们做好的,哪些是我们要做的. Action Spring You ...
- Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据
概述 如何获取本地数据连接 示例从DBCP数据源中获取Oracle的本地连接对象 相关接口操作 LobCreator LobHandler 插入LOB类型的数据 以块数据的方式读取LOB数据 以流数据 ...
- SpringMVC环境简单搭建
本文介绍使用maven搭建Spring MVC 首先先介绍MVC(Model View Controller)模式: Model(模型):是应用程序中用于处理应用程序数据逻辑部分.通常模型对象负责在数 ...
- spring源码解读之 JdbcTemplate源码
原文:https://blog.csdn.net/songjinbin/article/details/19857567 在Spring中,JdbcTemplate是经常被使用的类来帮助用户程序操作数 ...
- 使用Spring JDBC进行数据访问 (JdbcTemplate/NamedParameterJdbcTemplate/SimpleJdbcTemplate/SimpleJdbcCall/Stor)
http://www.cnblogs.com/webcc/archive/2012/04/11/2442680.html 使用Spring JDBC进行数据访问 11.1. 简介 Spring JDB ...
最新文章
- 第章量子计算机产业,又一个世界第一,九章量子计算机诞生,中国战斗机智能空战不是梦...
- 9-分析事物问题并编写 Utils 文件
- linux 内存 shared,Linux Shared Memory的查看与设置
- 正圆锥体空间方程_你也可以理解“麦克斯韦方程组”
- linux-shell-命令总结
- matlab 中 diff 函数 cumsum 函数 logical 函数 tabulate 函数 使用方法
- 美团外卖广告投放系统的设计
- 【工作笔记】从零开始学ExtJs6(四)—— 常用api小记
- 【Magick++】创建图像
- USACO-Section3.2 Feed Ratios【克莱默法则】
- 数据可视化图表插件_7个最佳数据可视化WordPress插件(图表和图表)
- 华为服务器安装系统流程图,华为a安装手册.docx
- 如何改变Windows桌面任务栏的大小
- 从CSDN到GitChat
- Summary of Statistics for Interview
- 在PB中如何打开一个非執行文件
- java8合并两个List
- css选择第一个标签,倒数第二个标签,最后一个标签总结
- 使用ffmpeg进行简单的视频编辑
- 甲骨文总裁拉里埃里森在耶鲁大学的演讲
热门文章
- layer调用父页面方法_Ruby for SketchUp之图层【Layer】
- 防抖 节流_【前端面试】节流与防抖
- python集合的加减_python 中对list做减法操作
- java jvm内存地址_JVM--Java内存区域
- C++中的虚函数(表)实现机制以及用C语言对其进行的模拟实现
- ThinkPHP V5 漏洞利用
- php怎么取request,PHP-如何在Guzzle中获取Request对象?
- html的过渡属性,CSS3属性transition(过渡)多属性详解
- ironpython2.7.9_IronPython下载
- 设计几个简单的汇编函数