hibernate blob 对象序列化保存
本文 是 在数据库中存储一个 estatic search 对象 ESQueryCondition 该对象 。
代码走起,
bean
package com.cmcc.aoi.selfhelp.entity; import java.io.Serializable; import java.sql.Blob; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Lob; import javax.persistence.Table; import org.slave4j.orm.hibernate.BaseEntity; /** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年11月2日 下午2:27:10 * des: */ @Entity @Table(name = "estask") public class EsTask extends BaseEntity implements Serializable { @Id @Column(name = "es_id") private String esId; @Lob() @Column(name = "es_qcserializable") private Blob esQcserializable; @Column(name = "es_qcjsonstring") private String esQcjsonstring; @Column(name = "es_send_status") private int esSendStatus; @Column(name = "request_id") private String requestId; @Column(name = "insert_time") private Date insertTime; @Column(name = "last_update_time") private Date lastUpdateTime; public String getEsId() { return esId; } public void setEsId(String esId) { this.esId = esId; } public Blob getEsQcserializable() { return esQcserializable; } public void setEsQcserializable(Blob esQcserializable) { this.esQcserializable = esQcserializable; } public String getEsQcjsonstring() { return esQcjsonstring; } public void setEsQcjsonstring(String esQcjsonstring) { this.esQcjsonstring = esQcjsonstring; } public int getEsSendStatus() { return esSendStatus; } public void setEsSendStatus(int esSendStatus) { this.esSendStatus = esSendStatus; } public String getRequestId() { return requestId; } public void setRequestId(String requestId) { this.requestId = requestId; } public Date getInsertTime() { return insertTime; } public void setInsertTime(Date insertTime) { this.insertTime = insertTime; } public Date getLastUpdateTime() { return lastUpdateTime; } public void setLastUpdateTime(Date lastUpdateTime) { this.lastUpdateTime = lastUpdateTime; } }
存
EsTask et = new EsTask(); et.setEsId(deliverWebRequest.getRequestId()+""); et.setEsQcjsonstring(wstf.getWkjsTag()); et.setEsQcserializable(HibernateBlobUtil.ObjectToBlob(getESQueryCondition(wstf.getWkjsTag() ,req))); et.setEsSendStatus(-1); et.setLastUpdateTime(new Date()); et.setInsertTime(new Date()); esTaskService.save(et);
取
ESQueryCondition query = (ESQueryCondition) HibernateBlobUtil.BlobToObject( et.getEsQcserializable());
工具类
package com.cmcc.aoi.util; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import org.hibernate.Hibernate; /** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年11月3日 下午6:47:56 des: */ public class HibernateBlobUtil { public static java.sql.Blob ObjectToBlob(Object obj) { try { ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream outputStream = new ObjectOutputStream(out); outputStream.writeObject(obj); byte[] bytes = out.toByteArray(); outputStream.close(); return Hibernate.createBlob(bytes); } catch (Exception e) { return null; } } public static Object BlobToObject(java.sql.Blob desblob) { try { Object obj = null; ObjectInputStream in = new ObjectInputStream( desblob.getBinaryStream()); obj = in.readObject(); in.close(); return obj; } catch (Exception e) { e.printStackTrace(); } return null; } }
测试结果 ,一切ok .....
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!
相关推荐
- 实现了序列化接口 `Serializable`。 - 提供了 getter 和 setter 方法。 ```java public class Blobtest implements java.io.Serializable { private Long id; private Blob images; private String name; ...
- 插入数据:在保存实体时,Hibernate会自动处理Clob和Blob对象的序列化。可以通过`getClob()`和`setClob()`方法设置和获取Clob值,对于Blob,使用`getBlob()`和`setBlob()`。 - 更新数据:同样,更新实体时,...
8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 8.3.4 游离对象的特征 8.4 Session接口的详细用法 8.4.1 Session的save()和persist()...
8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 8.3.4 游离对象的特征 8.4 Session接口的详细用法 8.4.1 Session的save()和persist()...
8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 8.3.4 游离对象的特征 8.4 Session接口的详细用法 8.4.1 Session的save()和persist()...
8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的特征 8.3.3 被删除对象的特征 8.3.4 游离对象的特征 8.4 Session接口的详细用法 8.4.1 Session的save()和persist()...
- Serializable -> 使用Blob存储序列化对象 二、配置映射文件(.hbm.xml) 在Hibernate中,我们需要通过映射文件定义每个实体类与数据库表之间的映射关系。例如,对于一个名为`User`的实体,其id为Integer类型,...
通过 Hibernate 的 Session API 可以加载和保存 Java 对象。这些操作通常涉及到 Session 的开启、事务管理、提交或回滚等步骤。 #### 二、关联映射 **1.3 关联映射** - **1.3.1 映射 Person 类** 继续使用 `...
`serializable`用于序列化Java对象,映射为`VARBINARY`(或`BLOB`);`clob`和`blob`直接对应数据库的`CLOB`和`BLOB`类型,用于存储大量文本和二进制数据。 还有一些特殊的映射类型,例如`class`用于存储类名,映射...
Hibernate是Java领域中一款广泛应用的关系对象映射框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库。在Hibernate 3.2版本之后,引入了注解支持,极大地减少了XML配置文件的需求,使得代码...
- **概述**:Hibernate 采用代理模式,将对象持久化至数据库,通过 Session 和 Transaction 接口管理对象的生命周期。 - **实例状态**:包括瞬态、持久化和脱管三种状态,用于描述实体对象在 Session 中的不同状态。...
在Hibernate 3.2之前,对象的持久化信息通常通过XML配置文件来定义。然而,Annotations的引入允许开发者直接在类和属性级别上注解,简化了配置并减少了代码与配置的耦合。例如,`@Entity`注解用于标记一个Java类为...
- 实现序列化接口 `Serializable`。 - 提供无参构造方法。 - 定义私有变量,包括主键。 - 为每个属性提供 getter 和 setter 方法。 **1.3 映射猫类** - **映射文件:** - 创建 `.hbm.xml` 文件用于描述 Java ...
自定义Tuplizer以实现更复杂的序列化和反序列化逻辑。 #### 五、基本对象关系映射 - **5.1 映射声明** 介绍如何使用XML映射文件来定义对象与数据库表之间的映射。 - **5.1.1 Doctype** 指定映射文件的DTD...
11. `@Lob`: 用于存储大对象(LOB),如BLOB(二进制数据)或CLOB(字符数据)。 ```java @Lob private byte[] profileImage; ``` 12. `@Transient`: 标记为非持久化字段,不会映射到数据库。 ```java @Transient ...
- **4.1.1 实现无参数构造器**:为了兼容Hibernate的序列化需求,每个持久化类都需要至少有一个无参数的构造器。 - **4.1.2 提供标识符属性**:每个持久化类应该有一个唯一标识符属性,通常是`id`,用于区分不同的...
**Hibernate** 是一款开源的对象关系映射(ORM)框架,其主要目标是减轻开发者在数据持久化编程中的工作量,帮助开发者实现对象模型与数据库之间的无缝对接。通过使用Hibernate,开发者可以避免编写大量的SQL代码,...
- 对于字节型数据,如`Byte[]`、`byte[]`和其他可序列化类型,则被持久化为`Blob`类型。 - **`@Column`**:用于定义列的具体属性,如是否可更新、列名、是否允许为空等。例如: ```java @Entity public class ...
2. @Lob:用于大对象(BLOB或CLOB)字段,通常用于存储二进制数据或文本数据。 3. @SequenceGenerator:定义序列生成器,适用于Oracle等支持序列的数据库。 4. @JoinColumn:在关联关系中,定义外键所在的列。 5. @...