我正在编写服务以在我们的应用程序中实现审计,其中用户可以在任何修改之前和之后查看特定实体的状态,并且还应该能够回滚。我们已决定将XML Serialized对象存储在XML_TYPE列中的数据库中。
我是序列化的新手,我不知道如何实现相同,需要对要序列化的对象进行任何更改,或者我们需要有任何映射XML。有人可以建议一些好的库,我知道市场上有很多可用的产品,如JAXB,JIBX,JABX,XStream等。哪一个会好,如何使用它。
非常感谢任何帮助。
此致 拉维。
答案 0 :(得分:2)
JAXB是标准。在最简单(也是最常见的情况)中,您只需使用JAXB注释注释实体,并使用Marshaller
将对象编组为XML。
您可以使用Sun's reference implementation或Apache JaxMe。
据我所知,XStream是一个不错的选择,虽然我没有使用它。
答案 1 :(得分:2)
当然,最好的实体是拥有POJO(Plain Old Java Objects)。没有奇怪的属性,参考或方法。它简化了序列化,使模型对象与框架和奇怪的层保持中立,如持久性,UI,远程访问等。
XStream:简洁
我建议使用XStream库进行序列化。它试图将对象序列化和反序列化为XML的最简单方法。
你应该以这种方式思考searialization:
因此,这些是序列化要解决的两个问题。 XStream允许您创建序列化程序(XStream类),(OPTIONALLY)指示每个类使用哪个标记名称,(OPTIONALLY)指示属性的别名。
所以如果你有类似的东西:
package pack;
Person
+ mom: Person
+ dad: Person
它将在没有配置的情况下写入:
<pack.Person>
<mom>
<pack.Person>
...
</pack.Person>
</mom>
<dad>
<pack.Person>
...
</pack.Person>
</dad>
</pack.Person>
但是如果你告诉它将package.Person映射到它将使用该标签。你可以告诉它把属性“妈妈”写成“妈妈”等等。
XStream xs = new XStream();
xs.alias("person", Person.class);
xs.aliasAttribute(Person.class, "mom", "mother");
<强>参考强>
XStream还允许您指明所需的引用类型: