JAXB手动类注释与生成

时间:2014-01-14 05:25:27

标签: java jaxb

什么是手动类编写和从方案生成JAXB类的道具/缺点。我正在开始新的项目,并希望了解选择哪种方式来解决陷阱。

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

3 个答案:

答案 0 :(得分:1)

应该使用模式生成IMPO类来避免模式和java类之间的任何差异。

由于架构将在接口实体之间共享,因此双方都必须将代码确认为架构。

答案 1 :(得分:1)

从POJO开始的优点

  1. 更容易创建可与其他映射一起使用的模型 技术(例如JPA或JSON绑定)。
  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映射)。
  7. 从XML模式生成模型的优点

    1. 很容易将大型XML架构映射到Java类。
    2. 您可以更加确信您的Java模型完全符合您的XML架构。
    3. 混合两个

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

      示例


      <强>更新

        

      在JAXB中使用构造函数怎么样?据我所知,这是不允许的   没有puclic构造函数的类。这意味着我不能做一些   需要的字段。有没有正确的方法来处理必填字段?

      JAXB需要一个可以是私有的无参数构造函数。如果您的类没有no-arg构造函数,那么您可以使用XmlAdapter

答案 2 :(得分:0)

JAXB生成的类是值类,它们没有任何功能。为了添加任何功能,您应该使用生成的bean创建自己的类。您还可以扩展或修改我不推荐的生成的bean。我认为这是主要问题之一。

另一方面,手动注释bean生成的模式可能不包含所有必需的约束。

这就是为什么我认为没有最好的一个。您可以根据自己的需要选择两者。