我有一个 Java EE 6 网络应用程序,它通过 JAX-RS REST 网络服务提供它的数据。 这些实体使用 JPA 注释以及 javax.xml.bind JAX 注释进行注释。 我的目标是从我的 Web 应用程序项目中组装一个客户端 jar,其中包含 JAX-RS 注释的“DTO”类,用于我的 Web 应用程序客户端中的 JAX 解码。
由于 JPA 注释,将原始实体放在客户端 jar 中不是一种选择,这会导致客户端的虚假依赖关系。
有没有一种方法可以在不为 Web 应用程序和客户端编写两次 JAX-RS 类的情况下执行此操作?
我想到了注解处理并删除实体中的所有 JPA 注解,这很狡猾,但不是很方便。 我的第二个想法是提取实体所需的 getter/setter 的接口(interface)。这里的问题是如何处理放置在类成员和 getter 上的 JAX 注释。
这两种方式似乎都以某种方式起作用。但是是否有针对该任务的通用解决方案?
提示:是的,我知道通过 rest 直接公开 JPA-Entities 的方法及其与进化等的耦合缺点 =)
最佳答案
您可以通过 XML ( http://java.sun.com/xml/ns/persistence/orm_2_0.xsd ) 而不是注释来提供 JPA 元数据。这将为您提供没有类路径依赖性的映射。
关于java - 如何从 REST 客户端的实体中公开 JAX-RS "DTO"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8702135/