【问题标题】:Why are POJOs intended to be serialised/deserialised to JSON commonly contained in an 'entities' package? What is the meaning of 'entities'?为什么 POJO 要序列化/反序列化为通常包含在“实体”包中的 JSON? “实体”是什么意思?
【发布时间】:2019-01-21 10:59:34
【问题描述】:

问题相似性,即这不是重复的

注意:有许多问题与这个问题相似:

Mapping POJO to Entities

What is the exact meaning of the JPA @Entity annotation?

What is an Entity? Why is it called Entity?

但它们要么引用“实体框架”,要么引用“@Entity”注释(这显然是用来说明一个类可以映射到一个表)。尽管我的问题可能看起来与这些相似,但它略有不同,因此不应被视为重复。


我的实际问题

我正在使用一个代码库,其中包含一个名为“com.xxx.yyy.entities”的包。这个包包含许多具有基本相同结构的类:

  1. 私人领域
  2. 每个私有字段的公共吸气剂
  3. 每个私有字段的公共设置器
  4. “toString”方法。

下面是最简单的类之一的示例:

public class Competition {
  private String id;
  private String name;
  public String getId()            { return id;        }
  public void setId(String id)     { this.id = id;     }
  public String getName()          { return name;      }
  public void setName(String name) { this.name = name; }
  public String toString() { 
    return "{" + "" + "id=" + getId() + "," + "name=" + getName() + "}"; 
  }
}

“实体”包中包含的类从未实际实例化,而是始终序列化/反序列化到 JSON 或从 JSON 序列化/反序列化(此特定项目使用 GSON 来实现这一点)。

我的问题是:

  1. 这里的“实体”到底是什么意思?
    • 它基本上只是意味着一个旨在被序列化到/从 JSON 序列化的类吗?有没有一个更具体的术语而不是极其通用的“实体”?
  2. 这是 Java 项目中的常见模式吗?

【问题讨论】:

  • 该术语通常用于命名除了值之外还具有标识的事物,并且即使其值发生变化也被认为是“相同的事物”,而不是值对象 - 请参阅@ 987654324@。因此,它是一个非常通用但合适的名称,它基本上只是一个可变状态的容器。

标签: java jackson gson naming


【解决方案1】:

在传统意义上,“实体”是一个持久化到关系数据库的对象。通常(但不一定)一个实体映射到一个表。在更一般的意义上,en Entity 表示映射到其他序列化对象(如 JSON)的实现。

我认为这个词来自Entity–relationship (ER) 模型,这与您在数据模型(通常是关系数据库)中表示信息的方式有关。这不仅仅是 Java 的概念,因为 ER 数据建模比 Java 早了几十年。

【讨论】:

    猜你喜欢
    • 2015-06-19
    • 1970-01-01
    • 2012-07-20
    • 2021-09-27
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    相关资源
    最近更新 更多