将对象序列化然后存入数据库:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = null;
try {
oos = new ObjectOutputStream(bos);
oos.writeObject(req);
} catch (IOException e) {
LOG.error("Serialable failed", e);
}
serviceLogDTO.setSerializedRequest(bos.toByteArray());
解释:req是要序列化的对象,数据库中存储的类型是blob,即二进制数据,数据对象的类型是byte[] ,存储时使用ByteArrayOutputStream的toByteArray方法转化字节数组即存储二进制数据。
将序列化的对象从数据库中取出:
byte[] bytes =sldo.getSerializedRequest();
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
ObjectInputStream obis = null;
DirectChargeRequest req = null;
try {
obis = new ObjectInputStream(bais);
req = (DirectChargeRequest)obis.readObject();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
解释:bytes是从数据库取出的存储了二进制数据的对象,通过ByteArrayInputStream来构造一个ObjectInputStream对象,再通过构造出的这个对象将二进制数据读出来转化成Object对象,req即是取出的对象。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/h345210sun/archive/2009/11/30/4907836.aspx
联系客服