我正在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 注释的确切含义是什么?
答案 0 :(得分:36)
@Entity
注释定义了一个类可以映射到一个表。就是这样,它只是一个标记,例如Serializable
接口。
为什么@Entity
注释是强制性的? ......好吧,这就是JPA的设计方式。当你创建一个新实体时,你必须至少做两件事
使用@Entity
创建一个id字段并使用@Id
其他任何东西都是可选的,例如表名是从实体类名派生的(因此@Table
注释可以是可选的),表的列是从实体变量派生的(因此{{1} }注释可以是可选的),等等......
JPA正在努力为想要学习/使用此API的开发人员提供快速而轻松的入门,并让开发人员可以选择尽可能少地配置功能,这是该API想要实现的方式之一这个"易于使用/学习"目标。因此,@Column
注释(连同@Entity
注释)是创建实体所需的最小值。
答案 1 :(得分:0)
JPA中的实体不过是POJO,代表可以持久保存到数据库的数据。实体表示存储在数据库中的表。实体的每个实例都代表表中的一行。
有关实体的更多信息: https://www.baeldung.com/jpa-entities