`

通过hibernate操作oracle的clob类型数据.doc

 
阅读更多

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"/>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics