spring+hibernate对Clob的处理

     原来用的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 保留意见!

 

 

你可能感兴趣的:(spring,oracle,Hibernate,bean,MyEclipse)