java - JAXB 手动类注释与生成

标签 java jaxb

手动类编写和从方案生成 JAXB 类的优点/缺点是什么。我正在开始新项目,想了解选择哪种方式来应对狂热的陷阱。

我有复杂的 XML 结构(基本上是 FreeSwitch configuration definition ),其中包含不同 XML 级别上的可重复类型。

最佳答案

从 POJO 开始的优点

  1. 更容易创建可与其他映射一起使用的模型 技术(例如 JPA 或 JSON 绑定(bind))。
  2. 可以在集合属性上利用 @XmlElementWrapper,而不是为该层生成单独的类(请参阅: How generate XMLElementWrapper annotation with xjc and customized binding )。
  3. 可以在域模型上添加您自己的业务逻辑。
  4. 指定 XmlAdapter 更简洁(与 http://blog.bdoughan.com/2011/08/xml-schema-to-java-generating.html 相比)。
  5. 更容易创建与您的确切命名约定相对应的模型。
  6. 轻松利用 JAXB 提供程序扩展(例如 MOXy 的 @XmlPath 映射)。

从 XML 模式生成模型的优点

  1. 非常容易将大型 XML 架构映射到 Java 类。
  2. 您可以更加确信您的 Java 模型与 XML 架构完全对应。

混合两者

对于 JAXB,它不需要是一种或另一种类型的选择。您可以使用外部绑定(bind)文件,以便在类生成期间 JAXB 将使用您为某些复杂类型编写的类,然后让生成的模型的其余部分指向这些类。

示例


更新

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/

相关文章:

java - 可以从 J2ME 查询手机的 native 收件箱吗?

java - 是否可以在 Azure 中部署具有文件上传功能的 Web 应用程序而不使用文件/Blob 存储服务?文件将保存在哪里

java - 运行我的程序时出现重新加载更改的类警告窗口

java - JAXB 多行属性

java - 我想将输出流转换为 String 对象

java - 是否有注释可以使用 JAXB 注册类包?

java - 不能在单个 xsd 元素上使用 jaxb 绑定(bind)

java - Delphi XE5 可以编译一个可以用'System.loadLibrary 在Java 中加载的.so 库吗?

java - org.apache.thrift7.TBase 与 org.apache.thrift.TBase

java - Hyperjaxb @Entity