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

JPA@Entity注释的确切含义是什么?,jpa,annotations,entity,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 p

我正在研究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\u CUSTOMER数据库表的字段

但为什么在JPA中必须使用@Entity注释,而我不能仅使用@Table注释将模型对象映射到特定的数据库表?它有一些其他的意义\行为,而我却没有


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

@Entity
注释定义类可以映射到表。也就是说,它只是一个标记,比如
Serializable
接口

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

  • @Entity

  • 创建一个id字段并用
    @id

  • 其他任何内容都是可选的,例如表名是从实体类名派生的(因此,
    @table
    注释可以是可选的),表的列是从实体变量派生的(因此,
    @Column
    注释可以是可选的),等等


    JPA正试图为想要学习/使用此API的开发人员提供一个快速而简单的开始,并让开发人员选择配置尽可能少的东西以使其功能化,这是此API实现“易于使用/学习”目标的方式之一。因此,
    @Entity
    注释(与
    @Id
    注释一起)是创建实体所必须做的最低要求。

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

    有关实体的更多信息:

    表中的
    @注释是可选的。那么,如果一个类不存在,JPA如何知道它将被映射到ORM过程中使用呢?@Entity也是可选的,因为您可以在ORM.xml中定义哪些类是实体。如果我们讨论的是类级注释,而在本例中@Entity是mandatory如果“@Entity注释定义了类可以映射到表”,那么为什么他们不直接使用@table!?那就更清楚了@IanVaughan可能认为,这也将支持存储在数据存储中的实体,而数据存储不知道表,例如一些nosql键值存储?网站链接中的好引用。