背景

          在信息發(fā)布系統(tǒng)中,如果需要將用戶發(fā)布的信息保存到Oralcle9i數(shù)據(jù)庫(kù)中,使用varchar2(4000)有時(shí)是不夠用的,因?yàn)槌擞脩翡浫氲膬?nèi)容還要加上html編輯器附加的html標(biāo)識(shí),所以我建議使用clob

          動(dòng)手

          其實(shí)也挺簡(jiǎn)單的:兩個(gè)配置、兩個(gè)注意

          1hbm配置

          <hibernate-mapping>

                 <class name="com.wonders.pubinfo.bean.LawInfo" table="JZ_LAW_INFO">

                        <id column="ID" name="id" type="java.lang.String">

                               <generator class="uuid.hex"/>

                        </id>

                        <property column="TYPE" length="4" name="type" type="java.lang.String"/>

                        <property column="TITLE" length="200" name="title" type="java.lang.String"/>

                        <property column="KEYWORD" length="200" name="keyword" type="java.lang.String"/>

                        <property column="CONTENT" name="content" type="org.springframework.orm.hibernate.support.ClobStringType"/>

                        <property column="PUBLISH_TIME" length="23" name="publishTime" type="java.sql.Timestamp"/>

                        <property column="PRACTICE_TIME" length="23" name="practiceTime" type="java.sql.Timestamp"/>

                        <property column="END_TIME" length="23" name="endTime" type="java.sql.Timestamp"/>

                        <property column="FILE_NUM" length="50" name="fileNum" type="java.lang.String"/>

                        <property column="PUB_ORGAN" length="50" name="pubOrgan" type="java.lang.String"/>

                        <property column="TEMPLATE" length="20" name="template" type="java.lang.String"/>

                        <property column="VALIDITY" length="1" name="validity" type="java.lang.String"/>

                        <property column="HTML_FILE" length="50" name="htmlFile" type="java.lang.String"/>

                 </class>

          </hibernate-mapping>

          2application配置

          <beans>

                 <!--**** Start of PERSISTENCE DEFINITIONS ****-->

            <bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

              <property name="location">

                <value>init.properties</value>

              </property>

            </bean> 

           

            <!-- JDBC Connection -->

            <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">

              <property name="driverClassName">

                <value>${datasource.driverClassName}</value>

              </property>

              <property name="url">

                <value>${datasource.url}</value>

              </property>

              <property name="username">

                <value>${datasource.username}</value>

              </property>

              <property name="password">

                <value>${datasource.password}</value>

              </property>

              <property name="maxActive">

                <value>${datasource.maxActive}</value>

              </property>

              <property name="maxIdle">

                <value>${datasource.maxIdle}</value>

              </property>

              <property name="maxWait">

                <value>${datasource.maxWait}</value>

              </property>

              <property name="defaultAutoCommit">

                <value>${datasource.defaultAutoCommit}</value>

              </property>

            </bean>

           

            <!--**** OracleLobHandler ****-->

            <bean id="oracleLobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler">

                        <property name="nativeJdbcExtractor">

                               <ref local="nativeJdbcExtractor"/>

                        </property>

            </bean>

           

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

                

                 <!--**** SessionFactory Definition ****-->

                 <bean id="sessionFactory" class="org.springframework.orm.hibernate.LocalSessionFactoryBean">

                        <property name="dataSource">

                               <ref local="dataSource" />

                        </property>

                        <property name="lobHandler">

                               <ref bean="oracleLobHandler" />

                        </property>

                        <property name="mappingResources">

                               <list>

                                      <value>com\wonders\pubinfo\bean\LawInfo.hbm.xml</value>

                                      <value>com\wonders\pubinfo\bean\LawType.hbm.xml</value>

                               </list>

                        </property>

                        <property name="hibernateProperties">

                               <props>

                                      <prop key="hibernate.dialect">${hibernate.dialect}</prop>

                                      <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>

                                      <prop key="hibernate.jdbc.fetch_size">${hibernate.jdbc.fetch_size}</prop>

                                      <prop key="hibernate.jdbc.batch_size">${hibernate.jdbc.batch_size}</prop>

                               </props>

                        </property>

                 </bean>

           

          </beans>

          3、注意

          1)、注意紅色字體部分,就是你要配置的;在引用spring類的地方,注意查看一下你使用的spring包中有的做相應(yīng)修改。

          2)、注意使用的datasource一定使用NativeJdbcExtractor,就是適用jdbc連接,不要用容器提供連接,不然會(huì)報(bào)如下錯(cuò)誤:

          OracleLobCreator needs to work on [oracle.jdbc.OracleConnection], not on [class com.ibm.ws.rsadapter.jdbc.WSJdbcConnection] - specify a corresponding NativeJdbcExtractor

          4bean中的clob字段使用String類型

          public class LawInfo implements Serializable {

                 ...

                 private String content;

                 ...

                 public String getContent() {

                        return content;

                 }

           

                 public void setContent(String content) {

                        this.content = content;

                 }

           

                 ...   

          }

           

          posted on 2006-03-08 21:03 野草 閱讀(1477) 評(píng)論(2)  編輯  收藏 所屬分類: 2shtv

          評(píng)論:
          # re: Spring + Hibernate + Oracle9i中使用Clob 2007-05-17 10:31 | 野心
          謝謝你的提示~~
          問(wèn)題解決了~~


            回復(fù)  更多評(píng)論
            
          # re: Spring + Hibernate + Oracle9i中使用Clob 2009-08-07 15:24 | slandi
          請(qǐng)問(wèn)你說(shuō)的2個(gè)注意是什么意思呀,沒(méi)太明白
          我按照你說(shuō)的,除datasource使用的proxool 0.9.1的jar包,其余的都一樣,使用的是oracle9i數(shù)據(jù)庫(kù),運(yùn)行后可以正確查詢出clob字段的數(shù)據(jù),可是插入時(shí)報(bào)如下錯(cuò)誤:
          org.springframework.dao.InvalidDataAccessApiUsageException: OracleLobCreator needs to work on [oracle.jdbc.OracleConnection], not on [oracle.jdbc.internal.OracleConnection$$EnhancerByProxool$$3dcd939d]: specify a corresponding NativeJdbcExtractor; nested exception is java.lang.ClassCastException: oracle.jdbc.internal.OracleConnection$$EnhancerByProxool$$3dcd939d incompatible with oracle.jdbc.driver.OracleConnection
          at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.createLob(OracleLobHandler.java:357)
          不知該如何解決?  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 鲁山县| 东阿县| 玛曲县| 铁岭市| 扬中市| 安化县| 龙南县| 荃湾区| 杭锦后旗| 巴中市| 松阳县| 齐河县| 郧西县| 紫金县| 南溪县| 思南县| 梁平县| 明溪县| 城市| 文山县| 河源市| 虞城县| 东山县| 星子县| 门源| 忻城县| 乌拉特中旗| 米易县| 玛沁县| 贵德县| 仙桃市| 张家口市| 康乐县| 资溪县| 秦安县| 都昌县| 化州市| 莎车县| 吉木乃县| 乾安县| 佳木斯市|