我正在使用JAXB,JPA和RESTful Web服务的混合来通过网络传递对象。我的域对象包含JPA和JAXB注释的混合,并且我能够使用Spring的RestTemplate以最少的代码成功解组我的域对象。我记得不久前读过的东西(可能是SO的答案,可能是博客),作者认为他永远不会依赖生产环境中的注释,但总是根据模式进行编组和取消编组。这仍然是必要的做法吗?
如果我有一个带有注释bean的.jar,它是两个项目中的依赖项(例如生成RESTful Web服务和使用客户端),那么不会引入生成的XSD有效地添加另一组需要维护的数据吗?使用带注释的JAXB POJO时,何时需要模式以及它们提供哪些好处?
答案 0 :(得分:1)
在开发和测试环境中,模式验证非常有用(例如,检测不同版本的代码),在生产中,您最好将其关闭。除非您正在与之通信的系统是由其他人开发的,否则XSD验证可以帮助快速有效地转移责任。
答案 1 :(得分:1)
只要服务的所有用户都是Java客户端,我同意它不会给您带来太多帮助,只会增加额外的维护工作量。但是,如果您计划拥有非Java客户端,那么生成XSD(可能作为自动构建的一部分,这将最大限度地减少维护开销)是有道理的。
答案 2 :(得分:1)
JAXB将其元数据表示为注释,因此根据XML架构确实没有marshal / unmarshal。
我领导MOXy的JAXB组件(EclipseLink),该组件最适合JPA implementation。我对开发人员的建议是使用JAXB和amp;的组合。 JPA注释他们的模型。
使用XML架构: