注意:目前只能操作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中。
下面附带代码片段。
//声明Bean中的Clob字段类型为String ,属性名不一定要是clob。这里我顺便取的,呵呵
private String clob;
public String getClob() {
return clob;
}
public void setClob(String clob) {
this.clob = clob;
}
<property name="clob" column="clob" type="text" />
<!-- 在XXX.hbm.xml中,设置类型为text-->
<property name="clob" column="clob" type="text" />
inter.setClob("大文本!");
2.Hibernate 保存blob数据
//使用Session的方式保存
Session session = service.getCurrSession();
Transaction tran=session.beginTransaction();
//首先定义一个空的blob对象保存在数据库中 inter.setPhoto(Hibernate.createBlob(new byte[100]));
session.save(inter);
session.flush(); session.refresh(inter,LockMode.UPGRADE);
SerializableBlob sb = (SerializableBlob) inter.getPhoto();
//photo是图片的byte数组的形式
byte [] photo = (byte[]) intermap.get("photo");
BLOB blob = (BLOB)sb.getWrappedBlob();
//将某个文件读入后,写到Blob字段的输出流中
OutputStream os = blob.getBinaryOutputStream();
InputStream fis = new ByteArrayInputStream(photo);
byte[] buff = new byte[fis.available()];
fis.read(buff);
fis.close();
os.write(buff);
os.close();
session.flush();
/**
* 使用Session操作大字段分为3步
* 1、设置一个空的Clob/Blob保存到数据库中
* inter.setPhoto(Hibernate.createBlob(new byte[100]));
* 2、获得数据库中这个大字段的游标 (Clob/Blob的cursor)
* session.refresh(inter,LockMode.UPGRADE);
* 3、用cursor往数据库写数据
* OutputStream os = blob.getBinaryOutputStream();
* InputStream fis = new ByteArrayInputStream(photo);
* byte[] buff = new byte[fis.available()];
* fis.read(buff);
* fis.close();
* os.write(buff);
* os.close();
* session.flush();
**/
分享到:
相关推荐
在保存或更新带有Clob和Blob字段的实体时,Hibernate会自动处理这些数据的插入和更新操作。例如,当你调用`session.saveOrUpdate(entity)`或`entityManager.persist(entity)`时,Hibernate会将Clob和Blob的内容正确...
- 插入数据:在保存实体时,Hibernate会自动处理Clob和Blob对象的序列化。可以通过`getClob()`和`setClob()`方法设置和获取Clob值,对于Blob,使用`getBlob()`和`setBlob()`。 - 更新数据:同样,更新实体时,...
以上就是关于在Hibernate中保存Blob和Clob对象的基本操作。在实际项目中,还需要考虑性能优化、错误处理等问题,例如使用流式处理减少内存占用,以及适当地配置Hibernate的缓存策略等。了解并熟练掌握这些技巧,能...
Java 中处理 Clob 和 Blob 类型的注解配置 Java 中处理 Clob 和 Blob 类型的注解配置是一种常见的处理大规模数据的方法。Clob(Character Large OBject)类型和 Blob(Binary Large OBject)类型是数据库中两种常用...
在Java的持久化框架Hibernate中,BLOB(Binary Large Object)和CLOB(Character Large Object)是用来处理大数据类型的,如图像、音频、大型文本等。本文将深入探讨Hibernate如何进行BLOB和CLOB的操作,以及相关的...
在Java Web开发中,...本文将详细介绍如何在Hibernate中操作Blob和Clob字段,实现数据的存储与读取。 首先,我们需要在Hibernate映射文件(.hbm.xml)中定义Blob和Clob字段。对于Blob,可以这样声明: ```xml ...
这篇文章主要讲解了如何使用`JDBC`和`Hibernate`这两种不同的方式来处理`CLOB`和`BLOB`字段。 1. **数据库中的`CLOB`与`BLOB`类型** - 在MySQL中,`CLOB`对应`TEXT`类型,`BLOB`对应`BLOB`类型。 - 在DB2或Oracle...
无论是Hibernate还是JDBC,获取到Blob的输入流后,你可能需要将其保存到本地文件或者进行其他处理。这涉及到文件流的读写操作: ```java FileOutputStream outputStream = new FileOutputStream("outputFilePath");...
在Hibernate的`SessionFactory`配置中,需要指定`lobHandler` Bean来处理CLOB和BLOB字段: ```xml <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean"> ...
一个完整的工程,主要功能为:spring+hbernate对clob、blob字段的处理 包括:数据脚本、典型的SSH框架处理,以及spring、hibernate数据批量保存等功能源码、所用到的lib包 数据环境为:oracle 10G 开发:Mycelipse5.1...
hibernate Blob、Clob字段的映射的例子.数据库mysql,数据库放在文件夹里面,例子的说明文章在我的csdn blog: http://blog.csdn.net/zhengcandan
JDBC实现对CLOB和BLOB数据类型的操作 在数据库中,存在两种类型的数据:CLOB(Character Large OBject)和BLOB(Binary Large OBject),它们用于存储大型数据,如文本、图片、音频、视频等。对CLOB和BLOB数据类型...
在Java世界中,尤其是在持久化框架Hibernate中,处理Clob类型的数据需要特别的方法和配置。 在Hibernate中,Clob类型的字段通常有两种处理方式: 1. **传统JDBC方式**: 在这种模式下,开发者需要直接操作Clob...
在Hibernate,一个流行的Java对象关系映射(ORM)框架中,Blob和Clob也被广泛使用,特别是在处理大型图片、文件或长文本时。 在Hibernate和Microsoft SQL Server的环境中,Blob常用来存储图像、音频、视频等二进制...
本主题“hibernate动态映射表处理Oracle的CLOB类型”主要聚焦于如何在Hibernate中有效地管理和操作CLOB字段。在Oracle 10g中,CLOB数据类型的处理有时会遇到一些挑战,尤其是在与ORM框架结合使用时。以下将详细介绍...
### Struts2框架介绍 Struts2是一个基于Java语言...同时,对于未来技术选型,Oracle数据库推荐优先考虑使用CLOB和BLOB类型来存储大型数据,因为这些类型比LONG类型拥有更好的特性,例如更大的容量和更好的操作灵活性。