我面临着将XML节点转换为JPA实体的任务。 XML中的对象类似于实体所代表的对象,但不完全相同。似乎在我之前会有很多转换代码。
XML在Schema .xsd文件中定义,我使用JAXB生成类并创建实例。上面的决定不是触及生成的类型。我会为每个人创建转换器,也许我会选择访问者模式,还不知道。
让我感到困扰的是某人决定更改.xsd文件并且不会更新负责的转换器的情况。
我的想法是让这些转换器类从代码中处理的适当JAXB类维护一个静态的最终字段列表。如果有人在.xsd文件中更改它们,则会记录一些警告,表示某些字段尚未处理,或者某些处理字段不再存在。
此外,我想确保转换器的数量与JAXB生成的类的数量相匹配。 怎么做?
也许我应该以某种方式检查执行时间从.xsd文件生成哪些类,并将它们与注册的转换器进行比较。我觉得我不能只扫描特定包中的类来检查JAXB输出类。
也许访问者模式可以告诉我出了什么问题,但延长检查可能是一个坏主意,直到XML-JPA转换中的错误发生在实践中。
答案 0 :(得分:0)
如果我做对了,你想要用JAXB注释,xsd文件和创建mappers xml< - >注释实体。实体,对吗?或者在xml和实体之间有一些DTO?
我认为您可以尝试在构建期间从Java类创建xsd文件。 然后xml - >您可以使用JAXB marshaller执行Java类转换。 如果您仍然需要知道转换的数量是否与Java类的数量相匹配,那么我将为此创建集成测试。例如,我需要保留一些命名约定: MyEntity,MyEntityMapper 然后测试将通过实体(dtos?)并搜索映射器。
但也许我没有正确理解你的问题,请告诉我更多细节。