原文:http://blog.csdn.net/hehexiaoyou/article/details/21019171
---------------------------------------------------------------------------
有时候必要会对数据库clob、 blob数据型进行操作,再加上spring 环境不得不要启用NativeJdbcExtractor 来帮助完成相关工作。
spring 官方文档中注明:

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 ConnectionStatement 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相关推荐

  1. plsql执行command命令控制台出现乱码_设计模式系列 — 命令模式

    点赞再看,养成习惯,公众号搜一搜[一角钱技术]关注更多原创技术文章.本文 GitHub org_hejianhui/JavaStudy 已收录,有我的系列文章. 前言 23种设计模式速记 单例(sin ...

  2. SpringMVC+Hibernate+Junit4+json基本框架近乎0配置

    公司是做APP开发的,须要后台来提供接口,于是乎,这个任务就交给我,经过重复的尝试,学习和參考别人的demo,最终搭出自己还算惬意的框架.SpringMVC+Sping3+Hibernate4+Jun ...

  3. 工作中技术学习总结-初版

    公司项目框架SSH,使用工作流引擎activiti-engine,公司内部框架封装:表单框架.数据库对应实体框架.自定义标签.流程配置框架:另外吐槽,公司对SSH框架应用不太深入! 目录: JSP a ...

  4. spring jdbctemplate源码跟踪

    闲着没事,看看源码也是一种乐趣! java操作数据库的基本步骤都是类似的: 1. 建立数据库连接 2. 创建Connection 3. 创建statement或者preparedStateement ...

  5. spring源码分析之spring-jdbc模块详解

    0 概述 Spring将替我们完成所有使用JDBC API进行开发的单调乏味的.底层细节处理工作.下表描述了哪些是spring帮助我们做好的,哪些是我们要做的. Action  Spring  You ...

  6. Spring JDBC-使用Spring JDBC获取本地连接对象以及操作BLOB/CLOB类型数据

    概述 如何获取本地数据连接 示例从DBCP数据源中获取Oracle的本地连接对象 相关接口操作 LobCreator LobHandler 插入LOB类型的数据 以块数据的方式读取LOB数据 以流数据 ...

  7. SpringMVC环境简单搭建

    本文介绍使用maven搭建Spring MVC 首先先介绍MVC(Model View Controller)模式: Model(模型):是应用程序中用于处理应用程序数据逻辑部分.通常模型对象负责在数 ...

  8. spring源码解读之 JdbcTemplate源码

    原文:https://blog.csdn.net/songjinbin/article/details/19857567 在Spring中,JdbcTemplate是经常被使用的类来帮助用户程序操作数 ...

  9. 使用Spring JDBC进行数据访问 (JdbcTemplate/NamedParameterJdbcTemplate/SimpleJdbcTemplate/SimpleJdbcCall/Stor)

    http://www.cnblogs.com/webcc/archive/2012/04/11/2442680.html 使用Spring JDBC进行数据访问 11.1. 简介 Spring JDB ...

最新文章

  1. 第章量子计算机产业,又一个世界第一,九章量子计算机诞生,中国战斗机智能空战不是梦...
  2. 9-分析事物问题并编写 Utils 文件
  3. linux 内存 shared,Linux Shared Memory的查看与设置
  4. 正圆锥体空间方程_你也可以理解“麦克斯韦方程组”
  5. linux-shell-命令总结
  6. matlab 中 diff 函数 cumsum 函数 logical 函数 tabulate 函数 使用方法
  7. 美团外卖广告投放系统的设计
  8. 【工作笔记】从零开始学ExtJs6(四)—— 常用api小记
  9. 【Magick++】创建图像
  10. USACO-Section3.2 Feed Ratios【克莱默法则】
  11. 数据可视化图表插件_7个最佳数据可视化WordPress插件(图表和图表)
  12. 华为服务器安装系统流程图,华为a安装手册.docx
  13. 如何改变Windows桌面任务栏的大小
  14. 从CSDN到GitChat
  15. Summary of Statistics for Interview
  16. 在PB中如何打开一个非執行文件
  17. java8合并两个List
  18. css选择第一个标签,倒数第二个标签,最后一个标签总结
  19. 使用ffmpeg进行简单的视频编辑
  20. 甲骨文总裁拉里埃里森在耶鲁大学的演讲

热门文章

  1. layer调用父页面方法_Ruby for SketchUp之图层【Layer】
  2. 防抖 节流_【前端面试】节流与防抖
  3. python集合的加减_python 中对list做减法操作
  4. java jvm内存地址_JVM--Java内存区域
  5. C++中的虚函数(表)实现机制以及用C语言对其进行的模拟实现
  6. ThinkPHP V5 漏洞利用
  7. php怎么取request,PHP-如何在Guzzle中获取Request对象?
  8. html的过渡属性,CSS3属性transition(过渡)多属性详解
  9. ironpython2.7.9_IronPython下载
  10. 设计几个简单的汇编函数