`
knight_black_bob
  • 浏览: 857930 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

hibernate blob 对象序列化保存

阅读更多

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捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

0
1
分享到:
评论

相关推荐

    hibernate对Blob类型字段进行数据添加.txt

    - 实现了序列化接口 `Serializable`。 - 提供了 getter 和 setter 方法。 ```java public class Blobtest implements java.io.Serializable { private Long id; private Blob images; private String name; ...

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

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

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     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()...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     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()...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     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()...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     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()...

    hibernate使用中与各种数据库字段类型对应类型训练

    - Serializable -> 使用Blob存储序列化对象 二、配置映射文件(.hbm.xml) 在Hibernate中,我们需要通过映射文件定义每个实体类与数据库表之间的映射关系。例如,对于一个名为`User`的实体,其id为Integer类型,...

    hibernate_reference使用指南全

    通过 Hibernate 的 Session API 可以加载和保存 Java 对象。这些操作通常涉及到 Session 的开启、事务管理、提交或回滚等步骤。 #### 二、关联映射 **1.3 关联映射** - **1.3.1 映射 Person 类** 继续使用 `...

    Hibernate 映射类型与Java 类型对照

    `serializable`用于序列化Java对象,映射为`VARBINARY`(或`BLOB`);`clob`和`blob`直接对应数据库的`CLOB`和`BLOB`类型,用于存储大量文本和二进制数据。 还有一些特殊的映射类型,例如`class`用于存储类名,映射...

    Hibernate注解jar包

    Hibernate是Java领域中一款广泛应用的关系对象映射框架,它简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库。在Hibernate 3.2版本之后,引入了注解支持,极大地减少了XML配置文件的需求,使得代码...

    hibernate3.1.2英文文档(pdf)

    - **概述**:Hibernate 采用代理模式,将对象持久化至数据库,通过 Session 和 Transaction 接口管理对象的生命周期。 - **实例状态**:包括瞬态、持久化和脱管三种状态,用于描述实体对象在 Session 中的不同状态。...

    Hibernate3.2 Annotations中文文档

    在Hibernate 3.2之前,对象的持久化信息通常通过XML配置文件来定义。然而,Annotations的引入允许开发者直接在类和属性级别上注解,简化了配置并减少了代码与配置的耦合。例如,`@Entity`注解用于标记一个Java类为...

    Hibernate 3.x 参考手册

    - 实现序列化接口 `Serializable`。 - 提供无参构造方法。 - 定义私有变量,包括主键。 - 为每个属性提供 getter 和 setter 方法。 **1.3 映射猫类** - **映射文件:** - 创建 `.hbm.xml` 文件用于描述 Java ...

    hibernate参考文档

    自定义Tuplizer以实现更复杂的序列化和反序列化逻辑。 #### 五、基本对象关系映射 - **5.1 映射声明** 介绍如何使用XML映射文件来定义对象与数据库表之间的映射。 - **5.1.1 Doctype** 指定映射文件的DTD...

    Hibernate 注解大全

    11. `@Lob`: 用于存储大对象(LOB),如BLOB(二进制数据)或CLOB(字符数据)。 ```java @Lob private byte[] profileImage; ``` 12. `@Transient`: 标记为非持久化字段,不会映射到数据库。 ```java @Transient ...

    hibernate_reference

    - **4.1.1 实现无参数构造器**:为了兼容Hibernate的序列化需求,每个持久化类都需要至少有一个无参数的构造器。 - **4.1.2 提供标识符属性**:每个持久化类应该有一个唯一标识符属性,通常是`id`,用于区分不同的...

    Hibernate Reference Documentation(Hibernate参考手册)

    **Hibernate** 是一款开源的对象关系映射(ORM)框架,其主要目标是减轻开发者在数据持久化编程中的工作量,帮助开发者实现对象模型与数据库之间的无缝对接。通过使用Hibernate,开发者可以避免编写大量的SQL代码,...

    Hibernate注解详解.pdf

    - 对于字节型数据,如`Byte[]`、`byte[]`和其他可序列化类型,则被持久化为`Blob`类型。 - **`@Column`**:用于定义列的具体属性,如是否可更新、列名、是否允许为空等。例如: ```java @Entity public class ...

    hibernate-annotations-3.2.1.GA.zip

    2. @Lob:用于大对象(BLOB或CLOB)字段,通常用于存储二进制数据或文本数据。 3. @SequenceGenerator:定义序列生成器,适用于Oracle等支持序列的数据库。 4. @JoinColumn:在关联关系中,定义外键所在的列。 5. @...

Global site tag (gtag.js) - Google Analytics