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

And*_*ili 24 entity annotations jpa

我正在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;

    ...........................
    ...........................
    ...........................
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

小智 42

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

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

  1. 用它注释 @Entity

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

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

JPA正试图为想要学习/使用这个API的开发人员提供快速而简单的开端,并让开发人员可以选择尽可能少地配置功能,这是该API实现这一目标的方式之一"简单使用/学习"目标.因此,@Entity注释(连同@Id注释)是创建实体所需的最小值.