我是JAXB 2(JSR-222)专家组的成员,并领导EclipseLink JAXB(MOXy)。
对于此用例,我更喜欢在可能的情况下使用单个模型。这将需要您的对象模型具有多个映射。JAXB规范没有提供执行此操作的方法,但是可以使用MOXy的外部化元数据扩展来完成:
元数据可用于补充注释或用于替换它们。因此,我建议您将基础架构与注释映射,并使用XML格式来修改架构每个版本的元数据。
我的问题是,我必须在某个时候更改Java模型(通过添加,重命名或删除属性),结果,我将拥有不兼容的保存XML,无法将其绑定回新的类形式。
删除Java属性(字段/属性)会使事情变得很困难,因为旧的XML不会映射到任何东西。相反,您可以将它们保留在模型中,并在XML元数据文件中将其标记为“ @XmlTransient”。