@Entity和@Embeddable有什么区别
2022-09-01 12:27:37
@Entity和@Embeddable注释之间的区别,当每个注释在类声明之前添加时?
- 第一个创建类作为实体,第二个从另一个表中插入列?
- 第一个创建类作为表,而第二个嵌入到另一个类中?
- 第一个将标准设置为类,第二个定义表类型
- 第一个为该类创建表,第二个将某些内容嵌入到不同的类中
- 第一个定义表属性,第二个创建两个表的并集
@Entity和@Embeddable注释之间的区别,当每个注释在类声明之前添加时?
@Entity
对类的注释定义了它,它具有明显的独立存在。因此,我们可以运行数据库查询,而不依赖于任何其他类。 类上的注释定义了它没有独立存在。因此,如果不依赖于其他类,我们就无法运行数据库查询。下面是一个示例,以便更好地理解它:@Embeddable
@Entity
User
-- long id
-- String name
-- String email
@Embedded
-- UserDetails userDetail
@Embeddable
UserDetails
-- Date dateOfBirth
-- String sex
-- String address
-- String maritalStatus
在这里你可以看到没有,是无用的。User
UserDetails
通常,在OOP中,我们首先设计类,然后设计数据库实体。对于某些类(如上面示例中的UserDetails类),我们不希望在DB中有单独的表,其中它们的独立存在是没有意义的。在这些情况下,我们将类标记为可嵌入。
通常,可嵌入类与嵌入它们的实体共享同一个表
实体具有标识,可以查询。可嵌入对象没有自己的标识,只能查询使用所属实体。
如果打开实体类,则始终会找到注释 - 它是必需的。如果你打开一个可嵌入的类,你永远不会找到一个注释 - 这是被禁止的。@Id
@Id
编辑:嵌入对象只能存储为父级的一部分(即在同一表中)并不完全正确。这仅适用于一对一关系。您可以在父实体中拥有可嵌入对象,它们将映射到自己的集合表。Collections
Maps