我正在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 批注的确切含义是什么?

最佳答案

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

为什么@Entity注释是强制性的? ……这就是JPA的设计方式。创建新实体时,您至少需要做两件事

  • @Entity注释了它
  • 创建一个id字段,并用@Id对其进行注释

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

    JPA试图为想要学习/使用此API的开发人员提供一个快速简便的开始,并且为开发人员提供配置尽可能少的东西以使其具有功能性的选项是此API想要实现“轻松”的方法之一。使用/学习”目标。因此,@Entity批注(以及@Id批注)是创建实体所要做的最少工作。

    关于jpa - JPA @Entity批注的确切含义是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29332907/

    10-09 04:38