java - 如何从 REST 客户端的实体中公开 JAX-RS "DTO"?

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

我有一个 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/

相关文章:

java - "The local variable may not have been initialized"错误

python - 如何删除 Django JWT token ?

rest - 来自 RESTful API 的分页响应负载

spring - 了解 RESTful Web 服务压力测试结果

java - Hibernate 将父级与分离的子级合并

java - 读取文本文件时未找到行错误

java - 在同一个 servlet 中处理不同请求的更优雅的方式

java - 如何将动态参数传递给testNG中的dataProvider方法

java - 持久化扩展实体(jpa)的非实体类 - 示例?

java - Hibernate ElementCollection(fetch=FetchType.EAGER) 导致 PropertyAccessException