Hibernate 中的一对一关联可以通过其中一种方式建立。
- 两个类的属性都保存在同一张表中。
- 可以在具有相同主键的不同表中维护实体。
- 实体可以在不同的表中维护,其中一个实体到另一个实体中维护一个键 (两个表之间的外键关系)
我想知道:
- 它仅取决于数据库模式吗?
- 这些方法的优点和缺点是什么?特别是我想知道以下两个。
Hibernate 中的一对一关联可以通过其中一种方式建立。
我想知道:
映射到同一个表(组件)中的类很容易维护。当不再使用数据时,您永远不需要清理记录。永远不会出现级联问题。它也比连接表快。但是您不能查询该组件,因为它没有被识别。
您还可以使用连接将组件(或任何其他数量的属性)映射到另一个表。这样做可能有技术原因,并且从应用程序的角度来看没有区别。连接也由 hibernate 使用相同的主键实现。
使用一对一关系时,您链接独立实体。两者都可以查询。其中一个没有自己的身份生成器,它从另一个获取 id,这使得它依赖于另一个。我在映射一对一关系时总是遇到问题,因为它们很难理解而且实际上很少见。
或者,您可以仅使用普通外键(多对一)来映射实体。这通常更容易理解和维护。缺点是数据库中有另一个外键,可以通过使用一对一来避免。