技术知识点:实体类,通常对应一个数据库表,实体类具有 OID,OID 与数据库中的主键对应
个人搜索:“实体类 OID ”
( 1)、区分 值 ( Value) 类 型和 实 体( Entity) 类 型 Address类 没有 OID, 这 个是 Hibernate组 件的一个重要特征。由于没有 OID,因此不能通 过 Session来 单 独保存、更新、 删 除或加 载 一个 Address对 象。 Hibernate 把持久化 类 的属性分 为值 ( Value ) 类 型和 实 体( Entity ) 类 型。两个最重要的区 别 在于前者没有 OID ,不能被 单 独持久化,它的生命周期依 赖 于所属的持久化 类 的生命周期, 组 件 类 型就是一 种值类 型;而 实 体 类 型有 OID ,可以被 单 独持久化。 |
l 每 个具体 类 使用一个数据 实 体: 每 个数据 实 体就既包含属性又包含它所表示的 类继 承的属性。 这种 方法最大的好 处 是,它仍然能相当容易地 执 行 专门报 告,只要您所需的有 关单 一 类 的所有数据都只存 储 在一 张 表中。但也有几个缺点。一个是当修改 类时 ,必 须 修改它的表和它所有子 类 的表。第二,无 论 何 时 ,只要 对 象更改了它的角色, 则 需要将数据 复 制到相 应 的 表中,并 为 它指定一个新的 OID。 这 又 涉 及到很多工作。第三,很 难 在支持多个角色的同 时 仍 维护 数据完整性。 l 每 个 类 使用一个数据 实 体: 为每 个 类创 建一 张 表,它的属性是 OID 和 特定于 该类 的属性。 这种 方法的最大好 处 就是它能 够 最好地适 应 面向 对 象的概念。它能 够 很好地支持多 态 性, 对 于 对 象可能有的 每 个角色,只需要在相 应 的表中保存 记录 。修改超 类 和添加新的子 类 也 非常容易,因 为 您只需要修改或添加一 张 表。 这种 方法也有几个缺点。第一,数据 库 中有大量的表 -- 实 际 上 每类 都有一个(加上 维护关 系的表)。第二,使用 这种 技 术读 取和写入数据的 时间 比 较长 ,因 为 必 须访问 多个表。如果通 过 将 类层 次 结 构中的 每 个表放入不同物 理磁 盘驱动 器 盘 片(假 设每 个磁 盘驱动 器磁 头 都 单 独操作)上来智能地 组织 数据 库 的 话 ,就可以 缓 解 这 个 问题 。第三,有 关 数据 库 的 专门报 告很困 难 ,除非添加一些 视图 来模 拟 所需的表 。 |
作 为实 体 对 象要考 虑对 象生命周期,它是具有 OID标识 的,是独立唯一的,而且很 复杂 。 而 值类 型 对 象没有生命周期,本身就是没有生命的,根本不能 谈 什 么 持久化, 简单 多了 。 People 是一个 实 体 类 ,代表一条 记录 。三个字段 oid 唯一 标识 符、 name 姓名、 date 生日。 |