Примечание: Я EclipseLink JAXB (MOXy) и являюсь членом JAXB 2 (JSR-222) экспертная группа.
Чтобы поддержать концепцию разных представлений ваших данных, я бы рекомендовал иметь другой экземпляр JAXBContext
для представления каждого из отображений: КРАТКОЕ, РЕЗЮМЕ, ПОЛНОЕ.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
можно загрузить из нескольких картографических документов.
Расширяемые модели
Возможность расширенияМетаданные отображения в MOXy предназначены для разработчиков, которые хотят внести изменения в метаданные, не отключая работающее приложение.Примером этого является модель предметной области, поддерживающая онлайн-опрос, который необходимо усовершенствовать для поддержки нового вопроса.