我跑到了要求我有两张桌子的地方,Order和Item在Order - >之间有“1对多”的关联。项目。但是,没有外键。
只是想知道Pojo是否可以根据ORM设计原则设计为具有关联关系。
除了应用程序中间层必须确保关联之外,有什么优点和缺点。
答案 0 :(得分:0)
根据我的经验,Hibernate并不关心外键。当您将它们添加到映射或注释时,它只用于生成DDL,如果您要求Hibernate为您生成DDL而不是手动生成DDL。虽然有文档证明,但我无法证实这一点。同样,根据我的经验,我还没有看到Hibernate使用外键。
除了你提到的那个,我没有看到任何问题。这是一个很大的问题,如果可能的话应该避免。
关于对象世界与关系世界,请考虑Christian Bauer和Gavin King在“Java持久性与休眠”中所说的话
面向对象语言表示使用对象的关联 引用;但在关系世界中,代表了一种联想 作为外键列,具有键值的副本(和约束 保证诚信)。两者之间存在很大差异 两个表示......
对象引用本质上是方向性的;该协会来自 一个对象到另一个。他们是指针......
另一方面,外键关联本质上不是 定向。导航对于关系数据模型没有意义 因为您可以使用表连接创建任意数据关联 和投影。挑战在于建立一个完全开放的数据 模型,它独立于与之一起使用的应用程序 数据,依赖于应用程序的导航模型,受约束的 查看此特定应用程序所需的关联。
所以,我从中得到的是,已经存在脱节。所以Hibernate不使用外键定义对我来说很有意义。