2013-08-04 84 views
0

我正在阅读“Java Persistence with Hibernate”一书,并且我正面对使用连接表(第二版,第230页)的one-2的示例。但我仍然无法理解这种方法的优点。休眠:使用连接表优势的一对一

你能解释一下吗?它是可选的一对二联系吗?在这种情况下。为什么我不能在一个关联表中简单地使用可空的外键?

+0

为何为空的?一对一连接完全映射为1至1,但不允许空FK,因为通常它们将PK用作FK到另一个表。所以他们共享PK(不能为空)。 – Angga

+0

One-2-one可以用fk作为单独的字段映射 –

回答

3

在OneToMany关系中使用JoinTable是可选的。我没看过这本书,但我认为在至少两个可能的优点于一身的OneToOne关系使用JoinTable的:

  1. 容易迁移到一对多或多对多:让我们说,你有一个实体的人OneToOne地址,所有工作都很好。但是,现在您有了一个新的业务规则,指出Person ManyToMany Address,因此您必须编写脚本来迁移数据并更改表结构。如果你有一个JoinTable,你只需要改变关系。

  2. 您可以删除JoinTable中的记录而不是实体表:在某些情况下,这可能是一个优点。再次使用我们的人员一对一地址,如果您想删除某人的地址,您可以将其从关系中删除。

干杯,

+2

我也已经读过,当关系是可选的时,我们应该在one-2-one关系中使用连接表。 –