首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Hibernate操作Oracle中clob、blob小结

2013-11-04 
Hibernate操作Oracle中clob、blob总结一、区别与定义LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的

Hibernate操作Oracle中clob、blob总结
一、区别与定义
LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列
LONG RAW: 可变长二进制数据,最长2G
CLOB:  字符大对象Clob 用来存储单字节的字符数据
NCLOB: 用来存储多字节的字符数据
BLOB: 用于存储二进制数据
BFILE: 存储在文件中的二进制数据,这个文件中的数据只能被只读访。但该文件不包含在数据库内。
bfile字段实际的文件存储在文件系统中,字段中存储的是文件定位指针.bfile对oracle来说是只读的,也不参与事务性控制和数据恢复。
二、clob、blob实现方式
1、Clob字段 - 注解方式的实现
2、Clob字段 - 映射文件的实现
3、Blob字段 - 注解方式的实现
4、Blob字段 - 映射文件的实现


1、Clob字段 - 注解方式的实现


Hibernate 配置文件:hibernate.cfg.xml

测试程序:

提示:
1. 在Oracle10g + 10g驱动(或者Oracle11g + 11g驱动)的环境下,只需要在Clob字段上,增加注解@Column(name = "CONTENT", columnDefinition = "CLOB"),即可成功实现建表、Clob字段的读写操作。
2. 在Oracle9i+9i的驱动环境下,仅增加注释@Column(name = "CONTENT", columnDefinition = "CLOB")时,建表、写人数据均能正常,但读取时会显示数据为空。如果在Oracle9i下又必须用9i的驱动,可以在Clob字段中再增加一行注解@Lob 或者 @Type(type = "text")。([color=blue]运用spring中org.springframework.jdbc.support.lob.OracleLobHandler,这个没有具体实践过,就不在本文展开了 )
3. 在Oracle9i+10g的驱动环境下,增加注解@Column(name = "CONTENT", columnDefinition = "CLOB"),同样可以成功实现建表、Clob字段的读写操作,可见9i的驱动对Clob支持不是很好,但10g、11g已经做了更新。[/color]
2、Clob字段 - 映射文件的实现
Bean文件:

映射文件:tb_bigstr.hb.xml

在hibernate.cfg.xml文件中增加域对象的映射文件:

测试程序:

提示:
如果是映射文件的,只需要把Clob字段的类型指定为text即:type="text"。

3、Blob字段 - 注解 方式的实现

在hibernate.cfg.xml中增加域对象:

运行测试程序:

提示:
对于byte[] 类型的字段如果要映射成Blob字段,只需要在该字段增加如下注解即可:

映射文件:tb_bigstr.hb.xml

测试程序:

提示
对于是映射文件的方式,Blob字段的类型指定为binary即:type=" binary "。



本文转自:http://sjsky.iteye.com/blog/1154916

热点排行