Spring+Hibernate中处理Oracle的大字段(clob二进制\blob大字符串)

Spring 同时被 2 个专栏收录
10 篇文章 0 订阅
9 篇文章 0 订阅

对于BLOG和CLOB字段,大部分数据库提供了较为透明的支持,但Oracle比较特殊一些,在用Spring和Hibernate操作时,需要作一些特殊的处理,以CLOB为例,基本有下面几个步骤[注:下面大部分内容来自于网络]:

1、在Spring的配置文件中加入以下几个Bean的定义

<bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"/>

<bean id="oracleLobHandle" class="org.springframework.jdbc.support.lob.OracleLobHandler" Lazy-init="true">
<property name="nativeJdbcExtractor">
<ref local="nativejdbcExtractor"/>
</property>
</bean>

2、在sessionFactory这个Bean中加入一个属性的引用
<property name="lobHandler"><ref bean="oracleLobHandle"/></property>

3、在需要clob的JavaBean对应的hbm.xml中,改对应的clob类型的字段
<property
name="XXX" type="org.springframework.orm.hibernate3.support.ClobStringType"
clumn=""
length="XXX" <!--定义clob字段大小(以字节为单位,最大2GB)-->
/>

4、 JavaBean的对应的属性类型为String。

基本上是这四个要点。需要注意两点:(1)如果使用Oracle9i自带的class12.jar这个JDBC驱动的话是不行的,会报错,据说要升级到classes12-9i.jar,我在Oracle的网站上没找到对应的下载,下载了ojdbc14.jar就可以了。(2)对Clob或Blog的操作必须在一个事务中进行,如在Dao层测试会出错,在配置了事务的Logic层就没问题了。

经过测试,如果用Oracle10g的JDBC驱动就没这么麻烦了,Hibernate+Oracle+CLOB的读写其实只要这样做:

1.在Oracle里设置某字段为clob类型。
2.在Hibernate的配置文件里使用网上下载的Oracle 10g最新的jdbc驱动。
3.实体类里把clob字段对应的属性类型设置为String。
4.hibernate的映射文件*.hbm.xml里把该字段对应的类型该为text。

然后就可以在程序里把它当成String随便用了。

补充:按照上面的方法又写了一个测试类,能够操作Clob字段了,但是启动JBOSS后就不能用了,后来找了很久才发现,原来我用的JBOSS的default/lib目录下也有一下老版本的Class12.jar,删除它换成最新的ojdbc14.jar就可以了。


点击打开链接:http://www.blogjava.net/yjj317/articles/81820.html

点击打开链接:http://blog.csdn.net/shimiso/article/details/5639017

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值