1问题描述 当我们需要操作大于 4000 字节的数据(字段)时,我们就需要用到 oracle 的 CLOB 数据类 型。在对其进行操作时主要有以下三种方案:采用传统的 jbdc 方式、把 clob 以 string 方式处理和直接使用 CLOB 类型三种方案,下面分别作简要介绍。
2对 CLOB 数据类型的操作
2.1方式一 传统的 jdbc 方式写入 Blob/Clob 字段和写入其它类型字段的方式非常不同, 因为 Blob/Clob 自身有一个 cursor, 必须使用 cursor 对 Blob/Club 进行操作,因而在写入 Blob/Club 之前,必须获得 cursor 才能 进行写入,那就需要先插入一个 empty 的 Blob/Club,这将创建一个 Blob/Club 的 cursor,然 后再把这个 empty 的 Blob/Club 的 cursor 用 select 查询出来,这样通过两步操作,就获得了
Blob/Club 的 cursor,可以真正的写入 Blob/Club 数据了。这种方式比较麻烦,读写都要增加 不少工作量。有关此方法的具体实现代码请参照示例一。
2.2方式二 把 CLOB 以 String 方式处理 此方法主要是通过继承net.sf.hibernate.type.ImmutableType 类或 cirrus.hibernate.UserType 类来创建一个新的类如:StringClobType,然后在相应的配置文件里面,把该字段映射为 StringClobType 类型,即可正常操作。此方法的优点主要体现在具体实现操作的代码较为简 单,但在第一步的映射问题上,较难理解。有关此方法的具体实现代码请参照示例二。
2.3方式三 直接使用 CLOB 类型第三种方法是直接使用 clob 类型,它主要是在实体中增加一个 clobString 字段,通过对该字 段的读写,在 DAOImpl 层进行特殊处理后,转换为真正的 clob 类型,从而实现 clob 类型字段的 CRUD 操作。此方法主要优点体现在配置文件的映射类型上,只需要像映射其它基本 类型一样, 直接写上 type="clob" 就 OK 了。 这对初次遇到这种问题的人来说入门相对容易。
2.3.1使用方法 下面以文章(只考虑文章标题和文章内容)为例介绍其使用方法。
2.3.2基本配置 1. 实体类配置在正常情况下文章实体类如下所示:
packagetestCLOB;
publicclass Article
{
private String title;
private String content;
public String getTitle()
{
return title;
}
public void setTitle(String title)
{
this.title = title;
}
public String getContent()
{
return content;
}
public void setContent(String content)
{ this.content = content; }
}
但是由于需要使用 CLOB 数据类型,该实体类需要进行如下变化:
package com.maskhr.jhb;
import java.sql.Clob;
public class Article
{ private String title;
private Clob content;
private String contentString;
public String getTitle()
{
return title;
}
public void setTitle(Stringtitle)
{
this.title = title;
}
public Clob getContent()
{
return content;
}
public void setContent(Clobcontent)
{
this.content = content;
}
public String getContentString()
{
return contentString;
}
public voidsetContentString(String contentString)
{
this.contentString = contentString;
}
}
其中 contentString 并不映射到数据库的 CLOB 字段,只是方便用户使用 get / set 处理 CLOB 字段
2. hibernate 映射文件 在该实体对应的映射文件里只需要增加下面一行,直接声明该字段为 clob 类型。
< propertyname="content " column="CONTENT_CLOB" type="clob"/>
分享到:
相关推荐
关于Clob类型在Hibernate中的应用小结.doc
hibernate存取oracle的clob
weblogic下转换oracle 的clob类型经常报转型错误,本例子通过反射解决weblogic.jdbc.wrapper.Clob_oracle_sql_CLOB转型成oracle.sql.CLOB问题
关于Oracle的 Clob数据类型在Hibernate中的应用小结
ORACLE中CLOB字段转String类型
ibatis 读取oracle clob类型
J2EE开发中,经常会遇到存储大文本的文字信息,而oracle数据库的vachar字段最大能存储4000个字节,存储更大的信息必须使用clob或blob字段,本文档就是针对j2ee开发中对colb字段操作的实现。
运用Java如何存取Oracle中的CLOB类型字段
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
hibernate动态映射表处理oralce10g的clob类型,压缩包为整个工程包. 真诚地希望能帮到你,同时真诚地希望你能和我交流, about any question^_^
sql server中的image类型的数据导出到oracle的clob字段中
用hibernate和jdbc读存blob或clob
Mybatis 处理 CLOB、BLOB 类型数据
关于Clob类型在Hibernate中 的应用小结关于Clob类型在Hibernate中 的应用小结关于Clob类型在Hibernate中 的应用小结关于Clob类型在Hibernate中 的应用小结
java操作oracle clob,基础教程,教你clob在java中的用法,简单易学。
Hibernate对BLOB CLOB操作,详细的操作说明
asp.net操作oracle clob字段demo
JDBC读写Oracle的CLOB字段