`
Dream.V
  • 浏览: 32332 次
社区版块
存档分类
最新评论

如何使用Hibernate 保存Clob 和Blob

 
阅读更多
今天书上让用ORACLE数据库建表,有个CLOB类型,,不知道到底怎么保存,用String也不行,,当时就怒了。。。抓狂


注意:目前只能操作Clob,因为不想用Session直接操作!

Clob在数据库中一般都是用来保存大文本字段的,Blob则是保存二进制流这样的!

1、Hibernate操作Clob字段
A.在实体Bean中将Clob字段声明为String类型。
并声明get,set方法。
B.在实体Bean XML的配置文件中,将Clob字段类型为:text
C.在Oracle中,表字段的类型声明为:Clob。
那么在实际的操作中,java就吧相当于直接操作String类型并保存在Oracle的Clob中。
下面附带代码片段。
Java代码收藏代码
  1. //声明Bean中的Clob字段类型为String,属性名不一定要是clob。这里我顺便取的,呵呵
  2. privateStringclob;
  3. publicStringgetClob(){
  4. returnclob;
  5. }
  6. publicvoidsetClob(Stringclob){
  7. this.clob=clob;
  8. }
  9. <propertyname="clob"column="clob"type="text"/>

Xml代码收藏代码
  1. <!--在XXX.hbm.xml中,设置类型为text-->
  2. <propertyname="clob"column="clob"type="text"/>

Java代码收藏代码
  1. inter.setClob("大文本!");

2.Hibernate 保存blob数据
Java代码收藏代码
  1. //使用Session的方式保存
  2. Sessionsession=service.getCurrSession();
  3. Transactiontran=session.beginTransaction();
  4. //首先定义一个空的blob对象保存在数据库中inter.setPhoto(Hibernate.createBlob(newbyte[100]));
  5. session.save(inter);
  6. session.flush();session.refresh(inter,LockMode.UPGRADE);
  7. SerializableBlobsb=(SerializableBlob)inter.getPhoto();
  8. //photo是图片的byte数组的形式
  9. byte[]photo=(byte[])intermap.get("photo");
  10. BLOBblob=(BLOB)sb.getWrappedBlob();
  11. //将某个文件读入后,写到Blob字段的输出流中
  12. OutputStreamos=blob.getBinaryOutputStream();
  13. InputStreamfis=newByteArrayInputStream(photo);
  14. byte[]buff=newbyte[fis.available()];
  15. fis.read(buff);
  16. fis.close();
  17. os.write(buff);
  18. os.close();
  19. session.flush();
  20. /**
  21. *使用Session操作大字段分为3步
  22. *1、设置一个空的Clob/Blob保存到数据库中
  23. *inter.setPhoto(Hibernate.createBlob(newbyte[100]));
  24. *2、获得数据库中这个大字段的游标(Clob/Blob的cursor)
  25. *session.refresh(inter,LockMode.UPGRADE);
  26. *3、用cursor往数据库写数据
  27. *OutputStreamos=blob.getBinaryOutputStream();
  28. *InputStreamfis=newByteArrayInputStream(photo);
  29. *byte[]buff=newbyte[fis.available()];
  30. *fis.read(buff);
  31. *fis.close();
  32. *os.write(buff);
  33. *os.close();
  34. *session.flush();
  35. **/

分享到:
评论

相关推荐

    关于在Hibernate中对于Clob,Blob字段的处理方法

    本篇将详细介绍在Hibernate中如何处理Clob和Blob字段,以及使用特定Oracle JDBC驱动程序的优势。 首先,Hibernate通过`org.hibernate.type`包中的`ClobType`和`BlobType`来映射Clob和Blob。在实体类中,你需要定义...

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

    - 插入数据:在保存实体时,Hibernate会自动处理Clob和Blob对象的序列化。可以通过`getClob()`和`setClob()`方法设置和获取Clob值,对于Blob,使用`getBlob()`和`setBlob()`。 - 更新数据:同样,更新实体时,...

    hibernate保存blob,clob对象

    以上就是关于在Hibernate中保存Blob和Clob对象的基本操作。在实际项目中,还需要考虑性能优化、错误处理等问题,例如使用流式处理减少内存占用,以及适当地配置Hibernate的缓存策略等。了解并熟练掌握这些技巧,能...

    java中(注解符)处理Clob(blob)类型

    在 Java 中,处理 Clob 和 Blob 类型需要使用特殊的注解配置来确保正确地读取和写入数据。 一、Clob 类型的注解配置 在 Java 中,处理 Clob 类型需要使用 @Lob 注解来指定该字段为大规模字符数据类型。@Lob 注解...

    Hibernate对BLOB CLOB操作

    在使用Hibernate操作BLOB和CLOB时,需要注意一些潜在的问题,比如内存管理,因为大数据对象可能会占用大量内存。另外,对于大文件的读写,可能需要分块处理,避免一次性加载整个文件到内存。同时,确保数据库支持...

    使用hibernate对oracle读取blob

    本文将详细介绍如何使用Hibernate和JDBC读取和存储Oracle数据库中的Blob对象。 ### 1. Hibernate Blob操作 在Hibernate中,Blob对象通常与Java的`java.sql.Blob`接口相对应。在实体类中,你可以定义一个Blob类型的...

    解析使用jdbc,hibernate处理clob/blob字段的详解

    这篇文章主要讲解了如何使用`JDBC`和`Hibernate`这两种不同的方式来处理`CLOB`和`BLOB`字段。 1. **数据库中的`CLOB`与`BLOB`类型** - 在MySQL中,`CLOB`对应`TEXT`类型,`BLOB`对应`BLOB`类型。 - 在DB2或Oracle...

    Hibernate对Blob,Clob的操作

    在Java Web开发中,...本文将详细介绍如何在Hibernate中操作Blob和Clob字段,实现数据的存储与读取。 首先,我们需要在Hibernate映射文件(.hbm.xml)中定义Blob和Clob字段。对于Blob,可以这样声明: ```xml ...

    spring+hibernate 解决大字段(clob)

    在Hibernate的`SessionFactory`配置中,需要指定`lobHandler` Bean来处理CLOB和BLOB字段: ```xml &lt;bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"&gt; ...

    hibernate Blob、Clob字段的映射的例子

    hibernate Blob、Clob字段的映射的例子.数据库mysql,数据库放在文件夹里面,例子的说明文章在我的csdn blog: http://blog.csdn.net/zhengcandan

    spring+hbernate对clob、blob字段的处理

    一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等功能源码、所用到的lib包 数据环境为:oracle 10G 开发:Mycelipse5.1...

    Blob和Clob使用例子

    在Hibernate,一个流行的Java对象关系映射(ORM)框架中,Blob和Clob也被广泛使用,特别是在处理大型图片、文件或长文本时。 在Hibernate和Microsoft SQL Server的环境中,Blob常用来存储图像、音频、视频等二进制...

    关于Clob类型在Hibernate中 的应用小结

    此外,还要注意数据库的性能,比如使用BLOB而非CLOB,根据数据的性质选择更合适的存储方式。 总的来说,理解和掌握Clob在Hibernate中的应用对于开发处理大文本数据的系统至关重要。通过合理的配置和使用,可以有效...

    详解jdbc实现对CLOB和BLOB数据类型的操作

    对CLOB和BLOB数据类型的操作是非常重要的,特别是在使用Java数据库连接(JDBC)时。本文将详细介绍JDBC实现对CLOB和BLOB数据类型的操作,包括读取和写入操作。 CLOB数据类型 CLOB数据类型用于存储大型字符数据,如...

    hibernate动态映射表处理oracle的clob类型

    - 使用Blob/Clob接口:直接操作Clob接口进行读写,而不是将其转换为字符串或其他数据类型,以减少转换开销。 通过以上内容,你应该对在Hibernate中动态映射Oracle 10g的CLOB类型有了深入理解,这将帮助你在实际...

    Struts2 Hibernate存取Oracle数据库中的BLOB数据.pdf

    ### Struts2框架介绍 Struts2是一个基于Java语言...同时,对于未来技术选型,Oracle数据库推荐优先考虑使用CLOB和BLOB类型来存储大型数据,因为这些类型比LONG类型拥有更好的特性,例如更大的容量和更好的操作灵活性。

Global site tag (gtag.js) - Google Analytics