我知道,使用JAXB,您可以generate Java files from an XSD,也可以generate the XSD from annotated POJOs。各有哪些优缺点?一个整体比另一个好吗?
我们基本上希望将事件序列化为XML格式的日志。
答案 0 :(得分:6)
最终取决于你想要关注的地方:
如果XML Schema是最重要的事情
然后最好从XML模式开始并生成JAXB模型。有一个JAXB(JSR-222)实现无法生成的XML模式的详细信息:
如果对象模型是最重要的事情
如果您将使用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 - >班级将是唯一的方式。