Java到XSD或XSD到Java

时间:2012-10-17 20:40:24

标签: java xsd jaxb pojo

我知道,使用JAXB,您可以generate Java files from an XSD,也可以generate the XSD from annotated POJOs。各有哪些优缺点?一个整体比另一个好吗?

我们基本上希望将事件序列化为XML格式的日志。

4 个答案:

答案 0 :(得分:6)

最终取决于你想要关注的地方:

如果XML Schema是最重要的事情

然后最好从XML模式开始并生成JAXB模型。有一个JAXB(JSR-222)实现无法生成的XML模式的详细信息:

  • 除0,1或无界之外的maxOccurs
  • 简单类型的许多方面
  • 模特组

如果对象模型是最重要的事情

如果您将使用Java模型而不仅仅是在对象和XML之间进行转换(即使用JPA进行持久化),那么我建议从Java对象开始。这将为您提供最大的控制权。

答案 1 :(得分:1)

这取决于您对启动点的要求和情况。

根据您的要求,首先使用generate Java files from an XSD来定义Java应该支持的输出(XML)格式。

答案 2 :(得分:1)

鉴于XML的一个要点是可移植的数据传输格式,无论平台或语言如何都可用,我会避免使用任何特定的编程语言生成XSD,这是一条经验法则。如果你知道你只是在Java端点之间进行通信,那么这可能无关紧要(但你确定这将是真的永远吗?)。

在其他条件相同的情况下,以编程语言中立的方式定义接口/模式会更好。

这个一般原则有很多例外,特别是如果你要与现有代码或遗留代码集成......

答案 3 :(得分:1)

如果您有机会同时设计pojo和schema,那么这是设计问题 - 您是为“完美”架构还是为“完美”java类设计的。

在某些情况下,您没有选择的奢侈品,在系统集成方案中,您可能会从另一个需要适应的系统获得预定义的XSD,然后是XSD - >班级将是唯一的方式。