0

我想编写一个 Java 程序,它可以获取任意数据并将其存储在 MySQL 数据库中。稍后可以再次读取数据并重建原始对象结构。

背景是我想要一个通用工具,用于需要电子邮件验证才能完成的表单。所以:

  1. 用户填写表格,
  2. 数据存储如上所述,
  3. 电子邮件通过包含特定 UUID 标识数据集的链接发送给用户,
  4. 用户点击链接,
  5. servlet 使用链接中的 UUID 加载存储的数据并处理数据。

我希望这适用于任何数据,而不仅仅是 String/String 或 String/int 对。我正在考虑使用 org.apache.common.beanutils 中的 LazyDynaBean 作为将数据传递给我的工具的一种方式。

问题是:有没有一种很好的方法来序列化这些东西,即使值是 bean(让我们限制 Java Beans),而不仅仅是原语?

我在想我的数据库表可能看起来像这样

emailVerification
| ID | UUID | validUntil |

emailVerificationData
| ID | emailVerification.ID | name | index | key | value | className |

这完全可行吗?谁能指出我如何将 DynaBean 存储和加载到这个结构中的正确方向?或者我错过的任何替代方案?

谢谢一堆。

4

1 回答 1

0

您可以将您的 Bean 序列化/反序列化到 XML(下面的示例)并将字符串存储在数据库中。

这有帮助吗?

    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;
}
于 2012-01-25T13:14:08.730 回答