编辑: 星野哀 2019-07-15
9

1

第一章 初探 Java 是一种使用用户定义类(user-defined class)运行时环境的程序语言.

这些用户类 的实例可代表存储于数据库、文件系统或主机事务处理系统的真实数据.此外,小型环 境也需要有办法来管理在本机存储空间内的持久性(persistent)数据. 由于各种数据来源的访问数据的技术不尽相同, 因此对程序开发人员而言,访问数据会 是一种挑战, 因为各种数据来源需要用不同的应用程序接口(API) . 这表示至少需要熟 悉两种程序语言才能开发这些数据来源的事务逻辑(business logic) :Java 程序语言及 数据来源所要求的特定数据访问语言. 此外,各种数据来源的数据访问语言也可能会不 同,也更提高了学习及使用各种数据来源的成本. 在发行 Java 数据对象 (Java Data Object,JDO)之前,有三种储存 Java 数据的标准: 串行化 (serialization) 、 JDBC(Java DataBase Connectivity) 以及 EJB(Enterprise Java Bean)的CMP(Container Managed Persistence) .串行化是用来将对象状态与其所引 用(reference)的对象图写入输出流(output stream) .它保留了 Java 对象的关系,因 此日后可以重建完整的对象图.不过串行化并不支持事件、 查询以及多位用户之间的数 据共享, 它只允许在原始串行化层面上访问数据,因此当应用程序需要管理多个串行化 时会十分麻烦. 串行化只能用于简单程序中的数据保存, 或用于无法有效支持数据库的 嵌入式环境中. JDBC 则需要明确地管理字段值,并将其对应至关系数据库的数据表.开发者不得不处 理两种截然不同的数据模型、程序语言及数据访问的规范 ―― Java 与SQL 的关系数据 模型. 由于实现关系数据模型与 Java对象模型之间的对应关系, 所花的开发工作过于庞 大, 因此多数开发者从未替其数据定义对象模型. 他们只是编写程序上的 Java程序代码 来处理底层关系数据库的数据表,因此最终仍无法有效利用面向对象程序开发的优点.

第一章

10 2 EJB组件结构是设计用来支持分布式对象运算的, 它也提供经由CMP (Container Managed Persistence) 的数据保存功能,这主要归因于其分布式功能.EJB 应用程序比 JDO要更复 杂而且有更多系统额外开销(overhead) ,不过,借着与 EJB 容器(container)的集成, JDO的实现已经可以在EJB容器环境中提供数据保存的功能. 如果应用程序需要对象能 持久保存,但不需具备分布式对象功能,你可以使用 JDO 来取代 EJB 组件.在EJB 环境 中使用JDO最普遍的方式是让EJB的Session Bean直接管理JDO对象, 而避免使用Entity Bean. EJB组件必须在受管理的应用程序服务器环境中运行;

但是 JDO应用程序却可在 受管理或未管理的环境中运行, 因此具备灵活性, 可选择最合适的环境来运行应用程序. 如果能将重点放在设计 Java 对象模型,并使用 JDO 直接存储类的实例,就可以更有效 率地开发应用程序.你只需处理单一信息模型,JDBC 则需要先了解关系模型与 SQL 语言,而在使用 EJB CMP 时,你还得被迫学习及处理此结构的其他功能.此外,EJB 还 有建构模型上的限制,而JDO 却无此限制. JDO定义了持久保存类与JDO运行时环境之间的关系. JDO的设计目的是用来广泛支持 不同的数据来源, 甚至包括一般不被认为是数据库的来源. 因此我们用 数据存储空间 (datastore)一词泛指以 JDO 访问的底层数据来源. 本章用一间名为 Media Mania 的虚构公司所开发的小型应用程序,来探索一些 JDO 的 基本功能. 这间公司在遍布美国的分店中租售各种形式的娱乐媒体. 这些分店有信息站 (kiosk)可以提供关于电影及片中演员的信息,这些信息可以帮助客户及店员选择吸引 客户的商品. 定义持久保存的对象模型 图1-1 是表示 Media Mania 对象模型中的类及其关系的 统一建模语言 (Unified Modeling Language,UML)示意图.一个 Movie 实例代表一部电影,至少在某一部电 影中扮演其中角色的演员则由Actor实例来代表. Role类代表演员在一部电影中所扮 演的特定角色,因此也代表 Movie 与含有属性 (该角色的名称)的Actor 之间的关系. 每一部电影都有一个以上的角色.演员可以在多部电影中担任某种角色, 或在单部电影 中饰演好几个人. 我们将这些持久保存类以及用来管理其实例的应用程序放入 Java 的com.mediamania. prototype 包中.

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题