注意: 我是EclipseLink JAXB (MOXy)负责人,也是JAXB 2 (JSR-222)专家组的成员。
为了支持对数据的不同视图的概念,我建议使用不同的实例JAXBContext
来表示每个映射:BRIEF、SUMMARY、FULL。MOXy 允许您通过利用其外部映射文档将多个映射应用于域模型。
策略
- 用于映射完整模型并使用 XML 元数据减少映射的注释
- 映射最小模型并使用 XML 元数据扩展映射的注释
示例代码
三个实例JAXBContext
建立在同一个类 ( UserProfile
) 上,但具有不同的映射,由 MOXy 的外部映射文档控制。
JAXBContext briefContext = JAXBContext.newInstance(UserProfile.class);
Map<String, Object> summaryProperties = new HashMap<String, Object>(1);
summaryProperties.put("eclipselink-oxm-xml", "summaryMapping.xml");
JAXBContext summaryContext = JAXBContext.newInstance(new Class[] {UserProfile.class}, summaryProperties);
List<String> fullMappingXMLs = new ArrayList(2);
fullMappingXMLs.add("summaryMapping.xml");
fullMappingXMLs.add("fullMapping.xml");
Map<String, Object> fullProperties = new HashMap<String, Object>(1);
fullProperties.put("eclipselink-oxm-xml", fullMappingXMLs);
JAXBContext fullContext = JAXBContext.newInstance(new Class[] {UserProfile.class}, fullProperties);
下面是一个示例,演示如何JAXBContext
从多个映射文档中引导 a。
可扩展模型
在 MOXy 中扩展映射元数据的能力是针对希望在不关闭正在运行的应用程序的情况下更改元数据的开发人员。这方面的一个例子是支持在线调查的域模型,需要对其进行增强以支持新问题。