1

我面临着将 XML 节点转换为 JPA 实体的任务。XML 中的对象与实体表示的对象相似,但并不完全相同。看来我前面会有很多转换代码。

XML 在 Schema .xsd 文件中定义,我使用 JAXB 生成类并创建实例。上面的决定是不要触及生成的类型。我将为他们每个人创建转换器,也许我会使用访问者模式,还不知道。

困扰我的是有人决定更改 .xsd 文件并且不会更新负责的转换器的情况。

我的想法是让这些转换器类维护来自适当的 JAXB 类的字段的静态最终列表,这些字段在代码中处理。如果有人在 .xsd 文件中更改它们,则会记录一些警告,指出某些字段尚未处理,或者某些已处理的字段不再存在。

此外,我想确保转换器的数量与 JAXB 生成的类的数量相匹配。怎么做?

也许我应该以某种方式检查执行时间可以从 .xsd 文件生成哪些类,并将它们与注册的转换器进行比较。我觉得我不能只扫描特定包中的类来检查 JAXB 输出类。

也许访问者模式可以告诉我出了什么问题,但是延长检查直到 XML-JPA 转换中的错误在实践中发生可能是一个坏主意。

4

1 回答 1

0

如果我做对了,您希望实体也使用 JAXB 注释、xsd 文件和创建映射器 xml <-> 实体进行注释,对吗?还是xml和实体之间有一些DTO?

我认为您可以尝试在构建期间从 Java 类创建 xsd 文件。然后 xml -> Java 类转换,您可以使用 JAXB 编组器进行。如果您仍然需要知道转换的数量是否与 Java 类的数量相匹配,那么我会为此创建集成测试。例如,我需要保留一些命名约定:MyEntity、MyEntityMapper 然后测试将通过实体(dtos?)并搜索映射器。

但也许我没有正确理解您的问题,请提供更多详细信息。

于 2013-07-24T20:53:41.290 回答