读书人

Hibernate操作Oarcle中Clob、Blob字段

发布时间: 2012-09-15 19:09:29 作者: rapoo

Hibernate操作Oarcle中Clob、Blob字段小结

?? blog迁移至:http://www.micmiu.com

?

最近常碰到有人问如何运用Hibernate操作Oracle中的Clob、Blob字段,相关问题大概如下几种:

如何读、写数据库中的Clob、Blob字段?注释方式或者映射文件两种方式是如何实现的?Clob字段是否可当成一般String来操作?为什么Clob字段插入正常,但是读取时却为nullJDBC的驱动是不是需要最新的,才能支持Clob当成String?JDBC驱动不更新,有没有办法实现Clob当成String操作?。。。。。等等这些问题

下面我将以不同的实现方式的分别来演示,上述提到的问题答案将在具体的实例中给出详细的答案。本文目录:

[一]、Clob字段 - 注解方式的实现[二]、Clob字段 - 映射文件的实现[三]、Blob字段 - 注解方式的实现[四]、Blob字段 - 映射文件的实现

???? 测试的相关源代码:bigstring_oracle_src.7z

?

[一]、Clob字段 - 注解方式的实现

?

?? 域对象:TbBigStrClob.java

?

?? Hibernate 配置文件:hibernate.cfg.xml

?

?

?? 测试程序:

?运行结果:

?

?? 映射文件:tb_bigstr.hb.xml

?

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

?

?? 测试程序:

?

?? 运行结果如下:

?

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

?? 运行测试程序:

?

运行结果如下:

映射文件:tb_bigstr.hb.xml

?? 测试程序:

?? 运行结果如下:

../../hibernate.cfg.xml configure
Hibernate: select bigstrblob0_.id as id1_, bigstrblob0_.NAME as NAME1_, bigstrblob0_.CONTENT as CONTENT1_ from MY_HB_BIG_STR_BLOB bigstrblob0_
start to init blob data
Hibernate: select max(id) from MY_HB_BIG_STR_BLOB
Hibernate: insert into MY_HB_BIG_STR_BLOB (NAME, CONTENT, id) values (?, ?, ?)
Hibernate: insert into MY_HB_BIG_STR_BLOB (NAME, CONTENT, id) values (?, ?, ?)
Hibernate: insert into MY_HB_BIG_STR_BLOB (NAME, CONTENT, id) values (?, ?, ?)
Hibernate: insert into MY_HB_BIG_STR_BLOB (NAME, CONTENT, id) values (?, ?, ?)
Hibernate: insert into MY_HB_BIG_STR_BLOB (NAME, CONTENT, id) values (?, ?, ?)
Hibernate: select bigstrblob0_.id as id1_, bigstrblob0_.NAME as NAME1_, bigstrblob0_.CONTENT as CONTENT1_ from MY_HB_BIG_STR_BLOB bigstrblob0_
Query data list size = 5
BigStrBlob :: id = [1],name = [test_1],content = [我是大字段<Blob>,at date:Mon Aug 22 13:47:50 CST 2011].
BigStrBlob :: id = [2],name = [test_2],content = [我是大字段<Blob>,at date:Mon Aug 22 13:47:50 CST 2011].
BigStrBlob :: id = [3],name = [test_3],content = [我是大字段<Blob>,at date:Mon Aug 22 13:47:50 CST 2011].
BigStrBlob :: id = [4],name = [test_4],content = [我是大字段<Blob>,at date:Mon Aug 22 13:47:50 CST 2011].
BigStrBlob :: id = [5],name = [test_5],content = [我是大字段<Blob>,at date:Mon Aug 22 13:47:50 CST 2011].

??? 从运行结果可见:映射文件的方式下,插入Blob数据和读取Blob数据均正常

?

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

?

?

?

本文连接:http://sjsky.iteye.com/blog/1154916

?

?

转载请注明来自:Michael's blog @ http://sjsky.iteye.com

----------------------------- 分 ------------------------------ 隔 ------------------------------ 线 ------------------------------

?

?

?

1 楼 gzcsschen 2011-12-22 你这个对小于4000的没问题
大了就会出问题 2 楼 sjsky 2011-12-26 gzcsschen 写道你这个对小于4000的没问题
大了就会出问题

这个我有时间测试下的 ,奇怪了

读书人网 >软件架构设计

热点推荐