随笔-5  评论-22  文章-35  trackbacks-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就可以了。
posted on 2006-11-17 18:02 fish的Blog 阅读(1381) 评论(4)  编辑  收藏 所属分类: hibernate

评论:
# re: Struts+Spring+Hibernate中处理Oracle的大字段 2009-05-30 19:39 | 笑先闻

笑先闻(86388427) 19:22:59

笑先闻(86388427) 19:22:59

笑先闻(86388427) 19:22:59
v
笑先闻(86388427) 19:22:59
  回复  更多评论
  
# re: Struts+Spring+Hibernate中处理Oracle的大字段 2009-05-30 19:39 | 笑先闻
@笑先闻
xxx  回复  更多评论
  
# sorry 2009-05-30 19:41 | 笑先闻
对不起!我想试一下你的留言板的设计!  回复  更多评论
  
# re: Struts+Spring+Hibernate中处理Oracle的大字段[未登录] 2012-11-14 14:55 | xx
class12.jar删了,换成ojdbc14.jar都没用啊,还是报错  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: