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:[email protected]
* @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:[email protected]
* @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捐助),沒錢捧個人場,謝謝各位。

謝謝您的贊助,我會做的更好!