将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(二) - 编程入门网
它。也就是说,如果关 系是双向的,则可以使用外键映射。这样,有两个选项可以从 Hibernate 映射一对多单向关系:
使用连接表映射并将连接表添加到数据库,或 使用外键映射并将关系从单向转换为双向,将反向属性添加到对象模型,并更改代码,以便将关系设 置为两个方向。 建议将单向关系转换为双向关系,因为与改变现有数据库模式和关联的行相比,此方法通常更容易修 改遗留代码。 在 OpenJPA 中,一对多(双向)关系按照以下方式进行映射: 在父对象中,使用一对多元素定义子对象的集合,并使用 id 元素为父对象定义主键。 在子类中,使用多对一元素定义父对象,并使用嵌套连接列元素定义子对象中的外键,并指定如何连 接父对象和子对象。 映射 15 一对多关系(OpenJPA XML 映射)
将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(二)(3)时间:2011-09-18 Donald Vines在定义一对多关系时,通常使用一些其他功能,您需要知道如何迁移这些功能: Hibernate inverse="true" 在 Hibernate 中,您可能会遇到在定义双向关系时使用的 inverse="true" 属性。如果是这样,请不 要担心,因为此功能等效于 OpenJPA 指定的关系的非所有者(它的表没有外键)。类似地,Hibernate inverse="false" 属性等效于 OpenJPA 的关系的所有者(它的表有外键)。 通常,这些概念是一致的,但使用 inverse="true" 设置在双向关系的多对一端定义 Hibernate 映射 这一情况除外。如果发现此类映射,则应在执行迁移之前更改它,因为它在 Hibernate 中不是最佳实践 ,并且不能生成最佳的 SQL。例如,如果将多对一端设置为 inverse="true",则每次创建子对象时, Hibernate 将执行两个 SQL 语句,一个创建子对象,一个使用父对象的外键更新子对象。在多对一端将 其更改为 inverse="false" 并在一对多端设置 inverse="true" 可以解决这一问题,并使它与 OpenJPA 保持一致。当然,进行该更改后,您应重新测试应用程序。 cascade="all-delete-orphan" JPA 规范中没有与此 Hibernate 功能等效的功能,但是 OpenJPA 持久性提供程序中的专有 @ElementDependent 注释完全可以执行 Hibernate 的 all-delete-orphan 功能执行的任务。如果需要使 用该功能,请参阅 OpenJPA 用户指南。尽管它是专有功能,但是,如果使用它迁移 all-delete-orphan 特性,则不需要对应用程序源代码进行任何更改。 若要以符合标准的方式迁移 all-delete-orphan 功能,您可以使用 OneToMany 注释中的 cascade=C |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |