我想编写一个Java程序,它接受任意数据并将其存储在MySQL数据库中。稍后可以再次读取数据并重建原始对象结构。
背景是我需要一个通用工具,用于需要电子邮件验证才能完成的表单。所以:
我希望这适用于任何数据,不仅仅是String / String或String / int对。 我正在考虑使用org.apache.common.beanutils中的LazyDynaBean作为将数据传递给我的工具的方法。
问题是:是否有一种很好的方法来序列化这些东西,即使值是bean(让我们限制Java Bean),而不仅仅是原语?
我在想我的数据库表看起来像这样
emailVerification
| ID | UUID | validUntil |
emailVerificationData
| ID | emailVerification.ID | name | index | key | value | className |
这可行吗? 有人能指出我如何在这个结构中存储和加载DynaBean的正确方向吗?或者我错过的任何替代方案?
非常感谢。
答案 0 :(得分:0)
您可以将您的Bean序列化/反序列化为XML(以下示例),并将String存储在数据库中。
这有帮助吗?
public static String beanToXMLString(final Object bean) {
String returnvalue = null;
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
final XMLEncoder xmlEncoder = new XMLEncoder(new BufferedOutputStream(byteArrayOutputStream));
xmlEncoder.writeObject(bean);
xmlEncoder.close();
returnvalue = byteArrayOutputStream.toString();
return returnvalue;
}
public static Object beanFromXMLString(final String xml) {
Object returnvalue = null;
final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xml.getBytes());
final XMLDecoder xmlDecoder = new XMLDecoder(new BufferedInputStream(byteArrayInputStream));
returnvalue = xmlDecoder.readObject();
xmlDecoder.close();
return returnvalue;
}