设为首页 收藏本站
查看: 1588|回复: 0

[经验分享] Hibernate+Spring操作oracle的BLOG(CLOB)数据

[复制链接]

尚未签到

发表于 2016-7-29 08:04:10 | 显示全部楼层 |阅读模式
系统采用的是HIBERNATE+SPRING进行数据的操作,开始一直采用HIBERNATE进行数据库的直连,用SPRING对ORACLE对BLOG字段进行处理,这两天打算采用PROXOOL对数据源进行管理,访问数据都没有问题,可对数据进行SAVEORUPDATE的时候报错如下:

occour a unkonw error from actionlocation OracleLobCreator needs to work on [oracle.jdbc.OracleConnection], not on [oracle.jdbc.internal.OracleConnection$$EnhancerByProxool$$10e3032b]: specify a corresponding NativeJdbcExtractor; nested exception is java.lang.ClassCastException: oracle.jdbc.internal.OracleConnection$$EnhancerByProxool$$10e3032b

想着应该是nativejdbcextractor的原因,在网上找了不少资料,终于搞明白了,原来在用SPRING配置处理BLOB(CLOB)字段时,不同版本的数据库,其NATIVEJDBCEXTRACTOR是不同的,我们用的是10G的数据,但原来的配置是

<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor" />
    <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true">
        <property name="nativeJdbcExtractor">
            <ref bean="nativeJdbcExtractor" />
        </property>
    </bean>

这种配置的方法是针对9i的,因为Oracle9i处理Clob的方式和别的数据库很不一样,甚至与Oracle10g都不兼容。
所以,正确的配置应该是

<bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.DefaultLobHandler" lazy-init="true"/>


轻松搞定,网上这方面的资料较少,真得在实际工作中慢慢积累经验呀:)

至于SPRING操作BLOG(CLOB)的方法,网上讲的较多,就不多说了,呵呵。加载PROXOOL与是相对比较容易的
hibernate.config.xml配置段如下:
<property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
<property name="hibernate.proxool.pool_alias">dbpool</property>
<property name="hibernate.proxool.xml">proxool.xml</property>
<property name="hibernate.connection.release_mode">auto</property>
<property name="hibernate.cglib.use_reflection_optimizer">true</property>
<property name="connection.provider_class">org.hibernate.connection.ProxoolConnectionProvider</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.connection.autocommit">true</property>

proxool.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- the proxool configuration can be embedded within your own application's.
Anything outside the "proxool" tag is ignored. -->
<something-else-entirely>
  <proxool>
    <alias>dbpool</alias>
    <driver-url>jdbc:oracle:thin:@dbip:1521:orcl</driver-url>
    <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
    <driver-properties>
      <property name="user" value="user"/>
      <property name="password" value="pass"/>
    </driver-properties>
    <house-keeping-sleep-time>90000</house-keeping-sleep-time>
    <prototype-count>5</prototype-count>
    <maximum-connection-count>100</maximum-connection-count>
    <minimum-connection-count>10</minimum-connection-count>
  </proxool>
</something-else-entirely>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-250840-1-1.html 上篇帖子: Oracle Package中返回游标的写法和调用 下篇帖子: 【转】 升级oracle RAC后出现ORA-12520错误
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表