如何从REST-Clients的实体中公开JAX-RS“DTO”?

时间:2012-01-02 14:45:25

标签: java rest jpa jax-ws java-ee-6

我有一个Java EE 6 Web应用程序,它通过JAX-RS REST Web服务提供数据。 实体使用JPA注释以及javax.xml.bind JAX注释进行注释。 我的目标是从我的web-app项目中组装一个客户端jar,其中包含JAX-RS带注释的“DTO”类,用于在我的web-app的客户端中进行JAX解组。

由于JPA注释,将原始实体放在客户端jar中是不可取的,这会导致客户端的伪造依赖。

有没有办法在没有为Web应用程序和客户端编写两次JAX-RS类的情况下这样做?

我想到了注释处理并杀死了实体中的所有JPA注释,这非常技术性,但不是很方便。 我的第二个想法是提取实体所需的getter / setter的接口。这里的问题是如何处理放置在类成员和getter中的JAX注释。

两种方式似乎都以某种方式起作用。但这项任务是否有通用的解决方案?

提示:是的,我知道通过休息直接暴露JPA实体的方法以及它与进化等的耦合缺陷=)

1 个答案:

答案 0 :(得分:3)

您可以通过XML(http://java.sun.com/xml/ns/persistence/orm_2_0.xsd)而不是注释提供JPA元数据。这将为您提供没有类路径依赖的映射。