【问题标题】:The best way to translate Entity Objects to POJO and vice versa?将实体对象转换为 POJO 的最佳方式,反之亦然?
【发布时间】:2016-12-22 18:53:48
【问题描述】:

这是我在一个项目中看到的: JPA 实体类用于将对象持久保存到 DB。 但是当我们创建 Jersey 端点时,我们通常会使用并生成 JSON。因此,某种 POJO 用于表示我们想要发送或接收的数据。

因此,每次处理 Jersey 请求时,都会使用“assembler”类从实体对象组装 POJO(反之亦然)。所以,流程是这样的。 实体对象 -> 组装服务 -> JSON。

现在我正在开始一个新项目,我不确定这种方法是否是最好的方法。从一个角度来看,它允许控制我想要以 JSON 形式返回的内容,并将这些表示与持久性类分开。另一方面,它对我来说似乎是一个额外的层,可以避免。

有没有办法让这个翻译更容易(可能是自动的)?

更新: 感谢您的回答。但是 POJO 到 JSON 的映射是由 Jersey 自动完成的。我真正想知道的是,是否有一种在不使用中间 POJO 的情况下将实体类(带有 JPA/Hibernate 注释的 Java 类)映射到 JSON 的好方法?

【问题讨论】:

  • 不确定,但你的意思是推土机之类的东西?
  • Jackson 或 Jersey 等大多数映射技术会自动将 Object 转换为 JSON,反之亦然,您只需定义一个类似于您期望的 JSON 的 Java 类。
  • json 到 pojo:jsonschema2pojo.org
  • JPA Enitties 可以在presentation中映射到POJO,有一些工具可以达到这个目的,dozer、modelMapper等。以及 json 格式的序列化和反序列化,我认为 Jersey 有本地方式来处理它。对于其他 Jaxrs 实现,例如 Wildfly 中的 RESTeasy,您可以使用 Jackson 等进行配置。

标签: java json jpa jersey


【解决方案1】:

您可以使用有时称为投影的方法。如果您不想在 REST API 上公开实体上的某些字段,您可以在只有一部分 getter 的实体中实现一个接口,然后仅将这些部分序列化为 json。

您可以查看Spring Data REST 以及那里是如何完成的。

【讨论】:

  • 谢谢。看起来是一个不错的 Spring 功能。
猜你喜欢
  • 2015-04-26
  • 2010-11-03
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
  • 2015-03-05
  • 2013-08-09
相关资源
最近更新 更多