手动类编写和从方案生成 JAXB 类的优点/缺点是什么。我正在开始新项目,想了解选择哪种方式来应对狂热的陷阱。
我有复杂的 XML 结构(基本上是 FreeSwitch configuration definition ),其中包含不同 XML 级别上的可重复类型。
最佳答案
从 POJO 开始的优点
- 更容易创建可与其他映射一起使用的模型 技术(例如 JPA 或 JSON 绑定(bind))。
- 可以在集合属性上利用
@XmlElementWrapper
,而不是为该层生成单独的类(请参阅: How generate XMLElementWrapper annotation with xjc and customized binding )。 - 可以在域模型上添加您自己的业务逻辑。
- 指定
XmlAdapter
更简洁(与 http://blog.bdoughan.com/2011/08/xml-schema-to-java-generating.html 相比)。 - 更容易创建与您的确切命名约定相对应的模型。
- 轻松利用 JAXB 提供程序扩展(例如 MOXy 的
@XmlPath
映射)。
从 XML 模式生成模型的优点
- 非常容易将大型 XML 架构映射到 Java 类。
- 您可以更加确信您的 Java 模型与 XML 架构完全对应。
混合两者
对于 JAXB,它不需要是一种或另一种类型的选择。您可以使用外部绑定(bind)文件,以便在类生成期间 JAXB 将使用您为某些复杂类型编写的类,然后让生成的模型的其余部分指向这些类。
示例
- JAXB compiler is binding xs:boolean to Java Boolean wrapper class, instead of boolean primitive type
更新
What about using constructors in JAXB ? As I know it is not allowed classes without puclic constructors. It is mean that I can't do some fields required. Is there proper way to deal with required fields ?
JAXB 需要一个无参数构造函数,该构造函数可以是私有(private)的。如果您的类没有无参数构造函数,那么您可以使用 XmlAdapter
。
关于java - JAXB 手动类注释与生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21106614/