我正在开发一个项目,用于从SOAP Web服务中检索数据并将其存储在数据库中供以后使用JPA。目前,我使用Spring WS作为客户端,并使用JAXB生成Web服务类。
目标是在数据库中忠实地复制这些类中包含的所有数据(相当大),为此,将JPA注释应用于JAXB生成的类是有点诱人的。从长远来看,这似乎很危险,因为生成的类看起来相当短暂,如果wsdl发生了变化,我会在重新生成代码时重新应用jpa注释做很多工作。
另一个选择是让我的webservice客户端将数据复制到我创建的JPA实体中,可能使用工厂模式。这将JPA持久性与WSDL设计者可能不断变化的想法分离开来,并且不知何故感觉更安全。它也感觉更安全,因为实体类永远不会被构建任务覆盖。
这种情况的最佳做法是什么?显然,当它意味着大量的数据传输对象时,过度的解耦并不会得到回报,但这种情况是否特殊? JAXB创建的类是否只能在Web服务客户端中使用,并且很快就会被更高级别的应用程序遗忘?
答案 0 :(得分:1)
原则上不要更改JAXB生成的对象。正如您正确指出的那样,这些将随着WSDL的每一个小改动而改变。
最常被接受的过程是将JAXB对象与JPA实体分离。相同的
有两个主要优点要在2之间传输数据,您可以使用工厂模式或使用像
这样的bean映射框架