论坛首页 Java企业应用论坛

关于Clob类型在Hibernate中的应用小结

浏览 53149 次
该帖已经被评为精华帖
作者 正文
   发表时间:2005-06-03  
我看你们真够懒的,行不行,自己动手试试不就知道了?光等人家喂给你?
0 请登录后投票
   发表时间:2005-06-03  
可惜odjbc14.jar是for jdk1.4的
0 请登录后投票
   发表时间:2005-06-04  
我在oracle817上,字段类型为clob,4000字符以内会出错;在oracle920上,超过4000字符时会出错。
0 请登录后投票
   发表时间:2005-06-17  
梅 写道
引用
也就是说,如果你使用最新的Oracle JDBC Driver,使用比较新的Oracle版本,你就可以直接像操作varchar2那样操作clob,没有任何限制了

比较新的Oracle版本 ?? 那如果用 最新的Oracle JDBC Driver用oracle 8i会不会仍然会有限制 ????

4000字符的限制完全是因为Oracle的Thin Driver造成的,用OCI Driver是不会有这个问题的。也就是说,这个限制与驱动相关与数据库无关。
我试过使用10g的驱动跑9i的数据库,操作CLOB字段就和操作varchar2一样,并且没有4000的限制。一换成9i的Driver就错误依旧。。。8i的没有测试过,不过原理应该一样。
0 请登录后投票
   发表时间:2005-06-19  
楼主总结的不错,我在半年前也是参考了Robbin的那片文章后,这样解决了在Session Bean中传递的序列化问题,直接在DAO层将 大字段 和String进行转换,当时想总结出来贡献给大家,由于项目紧,暂时就搁浅了,呵呵,被楼主抢先了,楼主总结的更全面,支持!
0 请登录后投票
   发表时间:2005-06-25  
像Robbin说的那样,我用的是最新的最新的Oracle Database 10g (10.1.0.2.0) 驱动程序,数据库是Release 9.2.0.1.0 ,插入一条10万多字符的数据到clob类型的字段,抛出异常:Caused by: java.sql.SQLException: setString 只能处理少于 32766 个字符的字符串。我试了多次,还是无法解决。
0 请登录后投票
   发表时间:2005-06-26  
Robbin说的没错,我试过了在xxx.hbm.xml中将数据库中Clob类型的字段映射成Hibernate的text类型,没有任何限制,但是映射成java.lang.String类型却有32K大小的限制。
0 请登录后投票
   发表时间:2005-07-22  
robbin 写道
粗粗看了一遍,非常精彩!总结的非常全面,是一个很好的教材。

但是我要补充说明一点:

Oracle9iR2和Oracle10G以上版本已经可以直接进行clob的插入,条件查询,模糊查询了。这一点,你可以试一试,我这周周一刚刚在Oracle10.1.0.3 Linux x86上面试过,不管是where还是like,就像varchar2一样处理。

另外将Oracle JDBC Driver升级到最新的版本,即Oracle10.1.0版本同时发布的odjbc14.jar,那么你将直接可以对clob进行操作。即

.....
pstmt.setString(x, 'xxxxx');; // 不需要setClob
.....

....
pstmt.getString(x,'xxx');;  // 不需要getClob
....


也就是说,如果你使用最新的Oracle JDBC Driver,使用比较新的Oracle版本,你就可以直接像操作varchar2那样操作clob,没有任何限制了。


hibernate配置有需要改的吗?
0 请登录后投票
   发表时间:2005-07-28  
我用DB2 7.2 也开发过一个相当于日志系统,其中日志内容字段也是用的Clob,配置文件类型都是用String到目前为止也没有问题,不知道会不会有32K大小的限制。
0 请登录后投票
   发表时间:2005-09-22  
oracle 10g 的驱动的确好 
thin driver 也能顺利按照 String 方式处理 Clob 字段,可以适用于 8.16 以后的所有版本   
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics