将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(二) - 编程入门网
将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(二)时间:2011-09-18 Donald Vinesc. 一对多关系 一对多关系定义到对象集合的引用。由于用例通常需要从父对象到子对象的遍历,而可能需要(也可 能不需要)从子对象到父对象的遍历,所以一对多关系是对象模型中最常见的关系类型;这意味着单向一 对多关系可以满足大多数情况。 也就是说,如果用例需要从子对象到父对象的遍历,则可以在子类中方便地添加多对一关系,使之成 为双向关系。 声明一对多关系的实体是父对象(并且是非所有者)。此实体的表定义主键,但是它没有外键(外键 在子对象中)。 此一对多关系引用的对象是子对象和关系的所有者。子对象具有外键,并引用父对象的主键。 在 Hibernate 中,一对多关系的映射通常是通过将列添加到外键的子表完成的,但映射的详细内容是 不同的,具体取决于是单向一对多关系,还是双向一对多关系。 在单向关系中,子表中的外键列不会映射到子对象中的属性,它在数据模型中,而不是在对象模型中 。由于是单向的,所以仅在父对象中有属性,而子对象中没有。此外,必须将外键列定义为可以为空,因 为 Hibernate 将首先插入子行(使用 NULL 外键),并在以后更新它。 在双向关系中,对象关系映射比较好,因为子对象中有一个用于外键列的属性,在数据库中该列不必 为空。但是,结果对象模型在对象之间有循环依赖关系和更紧密的耦合关系,并需要其他编程来设置关系 的两端。 可以看出,关于一对多关系的定义,有多个要考虑的权衡因素,但是通常建议使用单向关系,除非用 例指示需要用两个方向导航。 对象模型 映射 13. 一对多关系 (POJO)
Hibernate 约定 在 Hibernate 中,一对多(单向)关系按照以下方式进行映射: 在父类中,将设置、包或列表与一对多子元素一起使用。 如果关系是单向的,则在表示子类的表中创建外键;否则,使用双向关系的多对一关系。 将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(二)(2)时间:2011-09-18 Donald Vines映射 14. 一对多关系(Hibernate XML 映射)
务必注意 Hibernate 中的专有 cascade="all-delete-orphan" 功能(请参见映射 14)。使用此属性 使您能够从数据库删除子对象,方法是直接从父集合中移除它,然后将父对象保存到数据库。使用此专有 功能,不在代码中显式删除子对象。尽管在标准 JPA 中没有任何等效功能,但 OpenJPA 中的专有 @ElementDependent 注释提供了自动孤立项清除功能,但是此功能不可移植到其他持久性提供程序,并且 在取读代码时可导致混淆。接下来将详细讨论 all-delete-orphan 功能。 OpenJPA 约定 在 OpenJPA 中,您无法使用外键映射一对多单向关系,您必须使用连接表映射 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |