JPA中的Entity和Embeddable有什么区别?

JPA中的Entity和Embeddable的区别如下:

Entity:

  1. 用于定义实体类,对应数据库中的表。
  2. 使用@Entity注解标记,需指定@Id主键字段。
  3. 实体类将映射为独立的表,其字段将映射为表的列。
  4. 可以定义关系映射,与其他实体关联。

Embeddable:

  1. 用于定义可嵌入类,不对应数据库中的表。
  2. 使用@Embeddable注解标记,没有主键字段。
  3. 可嵌入类不会映射为表,其字段将映射为拥有实体的表的列。
  4. 不可以定义关系映射,仅能嵌入到实体或其他嵌入类中。
  5. 可嵌入类将与拥有其的实体共享生命周期。

代码示例:

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实体的生命周期,无法单独删除。