JPA中的Entity和Embeddable的区别如下:
Entity:
- 用于定义实体类,对应数据库中的表。
- 使用@Entity注解标记,需指定@Id主键字段。
- 实体类将映射为独立的表,其字段将映射为表的列。
- 可以定义关系映射,与其他实体关联。
Embeddable:
- 用于定义可嵌入类,不对应数据库中的表。
- 使用@Embeddable注解标记,没有主键字段。
- 可嵌入类不会映射为表,其字段将映射为拥有实体的表的列。
- 不可以定义关系映射,仅能嵌入到实体或其他嵌入类中。
- 可嵌入类将与拥有其的实体共享生命周期。
代码示例:
Entity:
@Entity
public class User {
@Id
private int id;
private String name;
}
Embeddable:
@Embeddable
public class Address {
private String street;
private String city;
}
@Entity
public class User {
@Id
private int id;
private String name;
@Embedded
private Address address;
}
上述Address
可嵌入类将映射为User
实体表的列,共享User
实体的生命周期,无法单独删除。