快速业务通道

将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一) - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
class="SalesRep"> <table name="T_SALESREP"/> <primary-key-join-column name="PRTCPNT_TID"/> ... </entity> <!—Administrator subclass --> <entity class="Administrator"> <table name="T_ADMIN"/> <primary-key-join-column name="PRTCPNT_TID"/> ... </entity>

2. 关系

对象模型中的对象之间(和数据模型中的表之间)需要多种关系。当数据模型在类似数据类的任何列 之间未指定关系时,对象模型必须明确对象之间的关系以支持遍历。此外,数据模型中的关系没有任何固 有方向(尽管按一个方向搜索可以比另一个方向更有效)。而对象模型关系固有包含从一个对象到另一个 对象的方向。

对象模型关系是在数据模型中实现的,方法是通过一个表中的外键引用另一个表中的主键。具有外键 的表称为子对象。其行表示对象,该对象的生命周期依赖于他们引用的对象。因此,其表将包含父对象的 外键。由于子对象具有外键,所以它必须始终指向有效的父对象;它不能是孤立的,这就意味着要删除父 对象,必须首先删除其子对象或从父对象到子对象执行级联删除。

为了维护关系,子对象也称为关系的所有者,而父对象称为非所有者。“所有者”这一概念非常重要 ,因为尽管 Java 程序员必须在两边设置双向关系,但是数据库只需更新一个值来反映这些更改;在子对 象(或所有者)中该更新针对外键。因此,在子对象中,对表示外键的属性的更改会传播到数据库,而对 父对象中反向属性的更改不会传播到数据库。

关系映射分为四个类别:

a.一对一

b.多对一

c.一对多

d.多对多

a. 一对一关系

一对一关系定义到另一个持久对象的引用,其中子对象的生命周期完全依赖于父对象的生命周期。

在对象模型中使用组件对象建模一对一关系仍将导致两个独立的类,但在数据模型中不会有两个独立 的表。.一对一关系有异常情况。如果发生异常,Hibernate 中的常见做法是将其建模为组件对象,这样 子表中的所有属性都将展开到父表中,因此在访问子表的属性时,无需连接父表和子表。

还可以使用两个其他方法在 Hibernate 中建模一对一关系:

将多对一元素与表之间的外键关联一起使用;请按照多对一关系指导原则进行操作。

将一对一元素 与表之间的主键关联一起使用;使用 OpenJPA 中的一对一元素进行映射。

本部分的其余内容将介绍在 Hibernate 中使用组件元素迁移一对一关系,并介绍如何将其迁移到 OpenJPA 中的嵌入对象。

将遗留Hibernate应用程序迁移到OpenJPA和EJB 3.0(一)(14)

时间:2011-09-18 Donald Vines

对象模型

映射 7. 一对一关系 (POJO)

// Employee (parent) class public class Employee implements Serializable { private Long employeeId; private EmployeeRecord employeeRec; ... } // EmployeeRecord (child) class public class EmployeeRecord implements Serializable { ... }

Hibernate 约定

在 Hibernate 中,使用组件对象的一对一关系按照以下方式进行映射:

使用类建模父类;在父类中,还要定义主键 (id) 和父类的其他属性。

使用嵌套组件元素建模子类;还可以在嵌套组件中定义其他属性(如果需要)。

映射 8. 一对一关系和组件对象(Hibernate XML 映射)

<!—Employee (parent) class <class name="Employee" table="T_EMPLOYEE"> ... <id name="employeeId" column="EMP_TID"/> <!-- EmployeeRecord (child) class <component name="employeeRec" class="EmployeeRecord"> ... </compon

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号