原来用的oracle 的vachar2 4000字节,感觉应该不小了,没想到没写几个字就完了,没办法,只有用oracle 的Clob了,可是怎么做了,上网查了好多,总结一下。。。
借用一下:
一、问题需求:
1.在持久化类中字段该用什么类型?
2.在Struts中文件对应的数据类型是什么?
3.在Hibernate 中字段对应的类型是什么?
4.如何在Spring 中处理这些文件?
二、解决:
如果你用的是oracle 8 那就不用看了,因为下面的方法,好像行不通,你只能再接再励另找方法了!
我的环境 oracle 10g 1.0.1,spring 1.2 ,hibernate 3.
1.持久类映射字段的类型:
1.1 Blob 用byte[];
1.2 Clob 用String;
2.Spring 配置文件:
<!-- Oracle 9i 以上,oracle 10g 10.1.0.1以下 --> <bean id="nativeJdbcExtractor" class="org.springframework.jdbc.support.nativejdbc.CommonsDbcpNativeJdbcExtractor" lazy-init="true"/> <!-- spring 的操作句柄 --> <bean id="lobHandler" class="org.springframework.jdbc.support.lob.OracleLobHandler" lazy-init="true"> <property name="nativeJdbcExtractor"> <ref local="nativeJdbcExtractor"/> </property> </bean>
2.1 往sessionFactory 中注入
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation" value="classpath:hibernate.cfg.xml"> </property> <!--把oracleLobHandler加入sessionFactory中 --> <property name="lobHandler" ref="lobHandler"/> </bean>
3. hibernate 配置
<property name="content1" column="CONTENT1" type="org.springframework.orm.hibernate3.support.ClobStringType" length="10000"/>
注意:length 是字节
4.大功就快造成了。就差这么一步
private String content1;
public String getContent1() {
return content1;
}
public void setContent1(String content1) {
this.content1 = content1;
}
就这样直接用吧,spring 把过程都写了,我们就透明着使用吧
PS:关于网上说的 oracle 10g 1.0.2.0以上版本可用ojdbc14.jar 保留意见!