【发布时间】:2015-11-06 21:53:22
【问题描述】:
我想在关系数据库 (PostgreSQL) 中持久化一个对象。我不知道要持久化的对象的具体类,只知道它实现了一个接口。
最好的方法是什么?
我正在考虑做类似的事情:
Interface obj = new InterfaceImpl();
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(buffer);
oos.writeObject(obj);
oos.close();
byte[] rawData = buffer.toByteArray();
String base64String = Base64.encodeBase64String(bytes);
//Persist the string to DB
//Load string from db
byte[] backToBytes = Base64.decodeBase64(base64String);
ByteArrayInputStream in = new ByteArrayInputStream(data);
ObjectInputStream is = new ObjectInputStream(in);
Interface obj = (Interface) is.readObject();
有更好的解决方案吗?
【问题讨论】:
-
如果您对对象的类型及其真正的实现一无所知,那么像您正在做的基本 Java 序列化可能是您能做的最好的事情。
-
也许
bytea数据类型而不是文本(我猜你将使用 base64 编码建议)对你来说是更好的解决方案。请参阅postgresql.org/docs/9.1/static/datatype-binary.html 了解更多信息。
标签: java postgresql serialization persistence