Hibernate:专业人士没有外键的关联映射的缺点

时间:2013-07-29 15:34:01

标签: hibernate

我跑到了要求我有两张桌子的地方,Order和Item在Order - >之间有“1对多”的关联。项目。但是,没有外键。

只是想知道Pojo是否可以根据ORM设计原则设计为具有关联关系。

除了应用程序中间层必须确保关联之外,有什么优点和缺点。

1 个答案:

答案 0 :(得分:0)

根据我的经验,Hibernate并不关心外键。当您将它们添加到映射或注释时,它只用于生成DDL,如果您要求Hibernate为您生成DDL而不是手动生成DDL。虽然有文档证明,但我无法证实这一点。同样,根据我的经验,我还没有看到Hibernate使用外键。

除了你提到的那个,我没有看到任何问题。这是一个很大的问题,如果可能的话应该避免。

关于对象世界与关系世界,请考虑Christian Bauer和Gavin King在“Java持久性与休眠”中所说的话

  

面向对象语言表示使用对象的关联   引用;但在关系世界中,代表了一种联想   作为外键列,具有键值的副本(和约束   保证诚信)。两者之间存在很大差异   两个表示......

     

对象引用本质上是方向性的;该协会来自   一个对象到另一个。他们是指针......

     

另一方面,外键关联本质上不是   定向。导航对于关系数据模型没有意义   因为您可以使用表连接创建任意数据关联   和投影。挑战在于建立一个完全开放的数据   模型,它独立于与之一起使用的应用程序   数据,依赖于应用程序的导航模型,受约束的   查看此特定应用程序所需的关联。

所以,我从中得到的是,已经存在脱节。所以Hibernate不使用外键定义对我来说很有意义。