转化头痛

时间:2013-07-24 20:06:08

标签: java xml jpa jaxb schema

我面临着将XML节点转换为JPA实体的任务。 XML中的对象类似于实体所代表的对象,但不完全相同。似乎在我之前会有很多转换代码。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

如果我做对了,你想要用JAXB注释,xsd文件和创建mappers xml< - >注释实体。实体,对吗?或者在xml和实体之间有一些DTO?

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

但也许我没有正确理解你的问题,请告诉我更多细节。