注: 私はEclipseLink JAXB (MOXy)のリーダーであり、JAXB 2 (JSR-222)エキスパート グループのメンバーです。
データのさまざまなビューの概念をサポートするために、それぞれのマッピングを表すために の異なるインスタンスを用意することをお勧めしますJAXBContext
: BRIEF、SUMMARY、FULL。MOXy を使用すると、外部マッピング ドキュメントを利用して、ドメイン モデルに複数のマッピングを適用できます。
戦略
- 完全なモデルをマッピングし、XML メタデータを使用してマッピングを削減するための注釈
- 最小限のモデルをマッピングし、XML メタデータを使用してマッピングを拡張するための注釈
サンプルコード
JAXBContext
同じクラス ( ) に基づいて構築された の3 つのインスタンスです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 のマッピング メタデータを拡張する機能は、実行中のアプリケーションを停止することなくメタデータを変更しようとしている開発者を対象としています。この例は、新しい質問をサポートするために強化する必要があるオンライン調査をサポートするドメイン モデルです。