MDA/MDD/TDD/DDD/DDDDDDD
          posts - 536, comments - 111, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          hibernate處理LOB

          Posted on 2009-07-31 00:05 leekiang 閱讀(927) 評論(0)  編輯  收藏 所屬分類: hibernate
          1,摘自http://www.javaeye.com/topic/13335
          Oracle9iR2和Oracle10G以上版本已經(jīng)可以直接進行clob的插入,條件查詢,模糊查詢了。這一點,你可以試一試,我這周周一剛剛在 Oracle10.1.0.3 Linux x86上面試過,不管是where還是like,就像varchar2一樣處理。
          另外將Oracle JDBC Driver升級到最新的版本,即Oracle10.1.0版本同時發(fā)布的odjbc14.jar,那么你將直接可以對clob進行操作。
          也就是說,如果你使用最新的Oracle JDBC Driver,使用比較新的Oracle版本,你就可以直接像操作varchar2那樣操作clob,沒有任何限制了。
          4000字符的限制完全是因為Oracle的Thin Driver造成的,用OCI Driver是不會有這個問題的。也就是說,這個限制與驅(qū)動相關(guān)與數(shù)據(jù)庫無關(guān)。
          我試過使用10g的驅(qū)動跑9i的數(shù)據(jù)庫,操作CLOB字段就和操作varchar2一樣,并且沒有4000的限制。一換成9i的Driver就錯誤依舊。。。8i的沒有測試過,不過原理應(yīng)該一樣。
          像Robbin說的那樣,我用的是最新的最新的Oracle Database 10g (10.1.0.2.0) 驅(qū)動程序,數(shù)據(jù)庫是Release 9.2.0.1.0 ,插入一條10萬多字符的數(shù)據(jù)到clob類型的字段,拋出異常:Caused by: java.sql.SQLException: setString 只能處理少于 32766 個字符的字符串。我試了多次,還是無法解決。
          Robbin說的沒錯,我試過了在xxx.hbm.xml中將數(shù)據(jù)庫中Clob類型的字段映射成Hibernate的text類型,沒有任何限制,但是映射成java.lang.String類型卻有32K大小的限制。
          oracle 10g 的驅(qū)動的確好
          thin driver 也能順利按照 String 方式處理 Clob 字段,可以適用于 8.16 以后的所有版本
          映射成text在同一列中有多個clob字段的時候有bug,
          保存時會將后一個字段的內(nèi)容保存到前一個字段里面去,不知道什么原因,我實在有些莫名其妙。
          換成spring的ClobStringType后一切正常
          經(jīng)測試,使用 Oracle 10g 的 JDBC 驅(qū)動,可以把 LONG 類型的字段當(dāng)成超長的 VARCHAR2 類型字段看待。
          注意:數(shù)據(jù)庫中應(yīng)該使用 LONG 型,而不是 CLOB 類型。使用 CLOB 類型,如果有中文,會莫名其妙的丟掉一些字符。這應(yīng)該是 Oracle 的一個 bug。
          適用于 Oracle 9.2 以上版本的數(shù)據(jù)庫。(注意僅僅是使用 10g 的 JDBC 驅(qū)動而已,即 ojdbc14.jar 包)

          參考:
          * Oracle JDBC 驅(qū)動下載地址 http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html
          * Handling CLOBs - Made easy with Oracle JDBC 10g http://www.oracle.com/technology/sample_code/tech/java/codesnippet/jdbc/clob10g/handlingclobsinoraclejdbc10g.html
          主站蜘蛛池模板: 石狮市| 景谷| 托克托县| 惠安县| 富顺县| 大悟县| 娱乐| 武义县| 当雄县| 西青区| 赤壁市| 皮山县| 金塔县| 隆化县| 井陉县| 香河县| 新宾| 绿春县| 凌云县| 金堂县| 邻水| 高淳县| 莱芜市| 故城县| 昭觉县| 响水县| 当雄县| 东山县| 碌曲县| 十堰市| 宁强县| 上饶县| 渭南市| 武安市| 兰溪市| 乡城县| 宁强县| 页游| 柳林县| 孙吴县| 金坛市|