2011-01-25 21 views
3

我正在使用JAXB,JPA和REST风格的Web服务混合传递对象。我的域对象包含JPA和JAXB注释的组合,并且我能够使用Spring的RestTemplate以最少量的代码成功解组我的域对象。我记得不久前读过一些东西(可能是SO的答案,可能是博客),作者认为他不会依赖生产环境中的注释,但总是根据模式进行编组和解组。这仍然是必要的做法吗?将XSD编组对象传递给线时,XSD是否被认为是良好的做法?

如果我在两个项目(例如生成的RESTful Web服务和消费客户端)中添加了带注释Bean的依赖项的.jar,是否不会有效地添加另一组需要维护的数据?在使用带注释的JAXB POJO时,何时需要模式以及它们提供了哪些好处?

+1

这不是真的java或JAXB特定的,这是使用XML-over-HTTP应用程序的最佳实践的更一般问题。 – skaffman 2011-01-25 13:53:12

回答

1

JAXB将其元数据表示为注释,因此根据XML模式确实没有元帅/反编组。

我领导的的JAXB组件(MOXy),这是最好的知道它的JPA implementation。我对开发人员的建议是在他们的模型上使用JAXB & JPA批注的组合。 XML架构的

用途:

  • 作为mentioned by biziclop JAXB可以在编组/解组操作充分利用XML Schema来执行验证。
  • XML架构还为您的RESTful服务的客户端提供了一种方法,以了解预期的XML消息的外观。作为mentioned by Fabian Steeg,您可以通过将模式创建为构建的一部分来使模式更容易维护。
1

在开发和测试环境中,模式验证可能非常有用(例如,检测代码的不同版本),在生产中最好关闭它。除非您与其他人进行通信的系统由其他人开发,否则在这种情况下,XSD验证可以帮助快速高效地将责任转移。

1

只要服务的所有用户都是Java客户端,我同意它不会给你带来太多,只会增加额外的维护工作量。但是,如果您计划使用非Java客户端,则生成XSD(可能作为自动构建的一部分,这可以最大限度地减少维护开销)。

相关问题