【问题标题】:How to limit work for mapping json to and from jpa objects如何限制将json映射到jpa对象和从jpa对象映射的工作
【发布时间】:2016-11-06 08:50:27
【问题描述】:

在许多教程中,我看到代表 json 接口的类也用于 jpa,在我看来这不是一个好的做法(如果我们想要更改 json,而不是 jpa 怎么办?我们必须添加忽略注释等)。在生产中我应该有两套完整的课程吗?在这种情况下,我们有很多“管道代码”,你是如何解决这个问题的?

【问题讨论】:

  • 例如,我们有实体 Person,它有 id 和 Collection of Items,作为 JPA 对象,我们有一个字段 Collection of object,但在 rest 接口中,我们只希望有 Item 的 id 集合

标签: java json spring jpa


【解决方案1】:

我同意你的观点:你应该有持久性模型(JPA)和服务模型(这里是 JSON)。

在这种情况下,我们有很多“管道代码”,你是如何解决的 这个问题?

逻辑层之间的抽象和职责分离是有代价的。
如果您希望 JSON 中的对象更轻量级以提高性能、安全性或更好的代码可维护性,则需要使用管道代码。
编写干净高效的代码是有代价的。

在 JSON 之前,我们遇到了同样的问题。
因此,根据经验,为了避免管道代码,我们应该尽量保持类尽可能多的相同,并且仅在表示同一事物但位于两个不同层的两个对象之间引入变化相关。当然是为了有效地使用第三方库提供的反射映射。

如果您使用 jackson 和 jackson-databind,您可以使用现成的类来执行一些自定义映射,但当然,如果您对某个类的映射非常具体,您应该立即为该类创建映射。
在您的示例中,jpa 中的对象集合与 json 中的 Id 集合, 为避免编写大量样板和管道代码,如果这种需求对您来说很常见,您可以开发一个实用程序类来处理任何实体的这种需求。

【讨论】:

    猜你喜欢
    • 2014-11-02
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 2012-04-23
    • 2019-11-27
    • 1970-01-01
    • 2012-07-28
    相关资源
    最近更新 更多