JPA @Entity注释的确切含义是什么?

时间:2015-03-29 18:13:59

标签: jpa annotations entity

我正在Spring应用程序中学习JPA,我对 @Entity 注释有一些疑问。

所以我有一个这样的模型类:

@Entity
@Table(name= “T_CUSTOMER”)
public class Customer {

    @Id
    @Column(name=“cust_id”)
    private Long id;

    @Column(name=“first_name”)
    private String firstName;

    @Transient
    private User currentUser;

    ...........................
    ...........................
    ...........................
}

好的,我知道 @Entity 注释是在类级别上,这意味着作为此类实例的对象的字段将被映射到 T_CUSTOMER 数据库表。

但是为什么在JPA中必须使用 @Entity 注释,我不仅可以使用 @Table 注释将模型对象映射到特定的数据库表?它有一些其他意义\行为,实际上我错过了吗?

我错过了什么? @Entity 注释的确切含义是什么?

2 个答案:

答案 0 :(得分:36)

@Entity注释定义了一个类可以映射到一个表。就是这样,它只是一个标记,例如Serializable接口。

为什么@Entity注释是强制性的? ......好吧,这就是JPA的设计方式。当你创建一个新实体时,你必须至少做两件事

  1. 使用@Entity

  2. 对其进行注释
  3. 创建一个id字段并使用@Id

  4. 对其进行注释

    其他任何东西都是可选的,例如表名是从实体类名派生的(因此@Table注释可以是可选的),表的列是从实体变量派生的(因此{{1} }注释可以是可选的),等等......

    JPA正在努力为想要学习/使用此API的开发人员提供快速而轻松的入门,并让开发人员可以选择尽可能少地配置功能,这是该API想要实现的方式之一这个"易于使用/学习"目标。因此,@Column注释(连同@Entity注释)是创建实体所需的最小值。

答案 1 :(得分:0)

JPA中的实体不过是POJO,代表可以持久保存到数据库的数据。实体表示存储在数据库中的表。实体的每个实例都代表表中的一行。

有关实体的更多信息: https://www.baeldung.com/jpa-entities