Habitat Framework

          專注于Java EE企業級開發
          posts - 13, comments - 81, trackbacks - 0, articles - 5
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Spring或Hibernate其實都提供了透明處理Clob的方法
          只是個人覺得用Spring的做法比hibernate更透明一點(hibernate2.16);
          具體做法為:
          1.在sessionFactory中加入lobHandler的注射:

          <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">
          ??????? <property name="dataSource" ref="dataSource"/>
          ????????<property name="lobHandler" ref="lobHandler"/>
          ??????? <property name="mappingResources">
          ??????????????????<value>xxx.hbm.xml</value>
          ??????????????????.....
          ?????????</property>
          </bean>

          2.定義這個lobHandler,值得注意的是這里有Oracle的版本區別:

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

          <bean id="nativeJdbcExtractor" lazy-init="true"?? class="org.springframework.jdbc.support.nativejdbc.SimpleNativeJdbcExtractor"/>

          因為Oracle9i處理Clob的方式和別的數據庫很不一樣,甚至與Oracle10g都不兼容,所以這里要用spring提供的SimpleNativeJdbcExtractor.如果使用Oracle10g的話,可以直接使用:

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

          對應的應該使用Oracle10g對應的JDBC驅動.

          4.在領域對象的hbm中對應的Clob字段應該使用這樣的定義:

          <property name="context" column="context" type="org.springframework.orm.hibernate.support.ClobStringType" length="1048576000"/>

          這里的length是字節了,不是長度哦,最大可以設到2G.對應的,該字段在領域對象中直接申明成String就可以了.當對這個字段寫入長數據時直接調用其set方法就可以了,Spring會自己幫你做余下的處理,讓你透明的處理Clob字段.

          5.業務邏輯層對該字段的操作必須需要在有事務管理的方法中使用,否則會報:
          java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with 'jtaTransactionManager' on LocalSessionFactoryBean required 這個錯誤


          評論

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2007-07-24 16:03 by mao_lu
          如何修改clob字段呀
          我的插入沒問題
          修改報java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with 'jtaTransactionManager' on LocalSessionFactoryBean required 這個錯誤

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2007-07-24 17:46 by Kerwin Weng
          理論上出現這種問題主要是因為hibernate的Session已經關閉,造成你的修改操作是在沒有事務的環境下提交的,所以就會報這種錯,如果你的插入和修改代碼幾乎完全一樣,可能就要詳細檢查你的配置和所選用的驅動了,如果方便留下你的MSN,我加你

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2007-08-14 08:48 by mao_lu
          很感謝你的回復,我的問題還是沒有解決,我的QQ:358131961
          向你請教

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2007-08-15 19:45 by 李瑞宏
          你好,我也報上面的錯誤,能加我嗎? qq:278241728
          msn:lrh165@hotmail.com

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2007-09-17 15:34 by yys
          me too!

          msn:chris-in@hotmail.com
          QQ:282842044

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2007-09-29 18:26 by 能加我嗎?我也是這個問題
          能加我嗎?我也是這個問題~
          QQ:39800425

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2007-10-19 16:37 by
          我也碰到這個問題,搞了半天解決不了,盼幫忙
          QQ:52332092

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2007-12-11 21:28 by 圣殿
          你好,我也遇到這個問題,在上傳的時候遇到
          Active Spring transaction synchronization or active JTA transaction with 'jtaTransactionManager' on LocalSessionFactoryBean required
          這樣的錯誤,你上面的所說的解決辦法是:.業務邏輯層對該字段的操作必須需要在有事務管理的方法中使用,我不理解,請多關照哈小弟哦,小弟是初學
          我的QQ是:345910534

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2008-01-08 11:17 by Strive
          兄弟我的問題是: 連接 數據庫都不能連上報 NLS 參數無效. 真是頭疼. 有解不? QQ:132175958 email:infosys@163.com

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2008-01-08 15:12 by Kerwin
          抱歉,我也沒有遇到過

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2008-01-23 10:58 by yangyi336
          我是有Spring+hibernate+Oracle環境下的Blob字段處理方式
          但老是報錯
          能否指點它們在哪里不同嗎
          能否把您的項目發給我一份嗎
          謝謝
          yangyi336@163.com

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2008-01-23 11:03 by Kerwin.Weng
          具體錯誤具體分析,我以前的代碼是別人的產品不可以發

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2008-03-21 10:48 by sunxinghua
          我的插入操作沒問題,修改操作報了您文中提到的那個EXCEPTION~
          我的插入和修改的方法都配置了事務,而且代碼基本一樣,主要是插入操作最后調用的是this.getHibernateTemplete.save(),修改方法改的是....update()方法~`
          請指教:
          MSN:xinghuasun666@163.com

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2008-03-21 11:31 by Kerwin.Weng
          getHibernateTemplete.save()的session可能和當前session不同的,尤其在OpenSessionInView的情況下

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2008-12-24 23:14 by yin_bp
          http://blog.csdn.net/yin_bp/archive/2008/12/24/3599469.aspx

          bboss persistent 1.0.2中方便地實現大字段(clob,blob)的處理

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創]  回復  更多評論   

          2010-09-03 22:38 by emlynswannd@yahoo.com
          HEY CRAZY ROBOT !!

          remeber me ? im Emyln :D

          # re: Spring+hibernate+Oracle環境下的Clob字段處理方式[完全原創][未登錄]  回復  更多評論   

          2010-10-09 16:46 by ln
          太感謝啦,找了好多方法都沒有解決問題,終于從你這找到答案啦
          主站蜘蛛池模板: 镇江市| 南京市| 日照市| 乌拉特前旗| 灵丘县| 柘荣县| 麻城市| 连平县| 荣成市| 嘉兴市| 连江县| 泽州县| 阜新| 新建县| 怀安县| 资中县| 珠海市| 洞头县| 界首市| 贵南县| 微山县| 绥阳县| 林西县| 玉林市| 青铜峡市| 望江县| 宣汉县| 宜兰市| 浮山县| 青岛市| 黄山市| 大石桥市| 桦南县| 诸暨市| 屏南县| 天津市| 阜新| 夹江县| 微山县| 察哈| 平乐县|