想象一下以下情况:
> A person has a passport.
> A person *owns only* one passport.
> One passport can only *be owned by a single* person.
Run Code Online (Sandbox Code Playgroud)
这是一对一关系的明显案例。为简单起见,我们假设一个人只有姓名,护照只有国籍。最让我烦恼的是,似乎每个人的做法都不一样。据我所知,可以采取四种策略来映射这种关系:
所以我的问题基本上被简化为以下内容:有了 4 号的这么多优势,为什么人们继续使用其他策略?我最大的把握是使用 ORM,例如 Hibernate,在我看来,它以相反的方式做事。Hibernate 跟踪的关系的拥有方是拥有数据库中外键的关系方。因此,如果我尝试在 Java 中使用 Hibernate 执行此操作,我的关系将被交换。如果我也像它想要的那样在 person 表上包含通行证的外键,它会破坏删除逻辑,就像我之前解释的那样。我的印象是 EF 也以这种方式工作。那么,有了所有这些,为什么人们仍然喜欢“不利”的方法呢?