正在加载图片...
Vol.21 No.4 刘庆文等:JAVA语言实现对象关系数据库的方法 ·393· 的最后,与main隐式相关的事物将要提交,随 class C{.Bobj;}可以有如下查询: 后新标识的持久对象和所有从持久对象可达的 select A.attribl,B.attrib2 对象都被提升到持久状态.用以下方法重用持 from C*B 久对象. where some-condition public class SpagShow{ 其中attribl是类A的属性,attrib2为类B的 public static void main (String[]args){//start 属性,*关联算子, traction JAVA语言不能直接执行AQL语句,因此 try {//catch store exception 我们通过服务器来执行AQL程序,并将结果返 PjavaStore pjs=PjavaStore.getStore();//obstain 回到客户端.例如: persistent store AQL.Execute("select A.attribl,B.attrib2 from Spaghetti sp=(Spaghetti)pjs.getPRoot(r1);//get C*B where some-condition"); persistent object 并返回set,list,bag等Collection类对象.AQL还 Sp.displayO); 有commitbegin保留提交前现场,commitend开 catch(PJSException e){...))//handle excep- 始提交,abort恢复提交前现场,AQL支持commit tion 的嵌套执行,客户端与服务器是通过JAVA RMI PjavaStore对象用来得到一个持久根,getPRoot 进行联接的, 方法得到持久对象.Atkinson的正交持久化是 基于命名,我们认为对象持久应该是基于对象 2JAVA对象关系数据库的实现方法 标识oid的.因此,我们修改JavaStore的方法使 之是支持oid.JavaStore在加入持久对象之前,首 JAVA对象关系数据库的结构如图1, 先寻找此对象的持久根,但不是以命名寻找而 JAVA对象关系数据库由CLIENT和SER- SERVER 是以此对象的类为模板寻找,如果找到根则将 CLLENT 此对象加入到此根的对象蔟之中,否则则建立 交互AQL 应用程序 RMI AQL解释器 以本对象的类为模板的根同时加入对象.这样 持久API 持久引擎 建立了数据库的模式,在进行重用时,首先将模 JAVA虚拟机 JAVA虚拟机 式类装入Java堆之中,然后生成对象. 当JavaStore中有很多同一类的对象时,则 图1JAVA对象关系数据库的结构 VER两部分组成,SERVER由交互AQL,AQL解 要通过Association Algebra的代数运算求得结果 释器,持久引擎和JAVA虚拟机组成.交互AQL 类对象集.Association Algebra共有9种算子有 丰富的语义表达能力,分别对对象的关联模式 处理交互AQL的解释,AQL解释器解释AQL 集进行运算以产生新的关联模式集,我们通过 语句、持久引整管理对象的虚拟内存与库、JAVA 虚拟机管理类的装入、对象实例的生成、AQL语 Association Algebra对SQL进行修改扩充为AQL 句中引用的类的方法的解释,CLIENT由应用程 (Association Query Language),其中把SQL中的 序、持久API和JAVA虚拟机组成.应用程序通 WHERE子句中的关系改为关联集.几种语句为: SELECT CLASS.ATTRIBUTE 过持久API持久化对象. FROM ASSOCIATION SET SERVER不停的监听AQL语句解释的请 求,在收到AQL语句时为此语句的建立解释线 WHERE CONDITION 程然后继续监听.而AQL解释线程启动,首先 PDATA CLASS.ATTRIBUTE WITH SOME- 对AQL语句进行语法分析,然后对关联集求值, THING 并返回结果.在server端需要虚拟内存的支持. FROM ASSOCIATION SET WHERE CONDITION l个Javastore由3个表组成:类名表,类表(存放 INSERT INTO ASSOCIATION_SET 类的字节码),对象表(存放类的持久对象).在 WITH CLASS.ATTRIBUTE="... Javastore被打开之后3个表都被读入到虚存之 例如对类 中,并生成虚拟地址与javastore中地址的对照 表,如图2所示, class A);class B extends A{);、 勺 刘 庆文 等 语 言 实现对 象 关系数据 库 的方法 的最 后 , 与 隐式相 关的事物将 要 提交 , 随 后 新标识 的持久对 象和 所 有从 持久 对 象可 达 的 对 象都被提 升到持 久 状态 用 以下 方 法 重 用 持 久 对象 〕 王 · 麦… 旅即 巧 对象用来得到一 个 持久根 , 方 法 得到持久对象 的正 交持久 化是 基 于 命名 , 我们 认 为对象 持久 应 该 是基 于 对象 标 识 的 因此 , 我们修改 的方法使 之 是 支 持 在加入持久对象之 前 , 首 先 寻 找此对象 的持久 根 , 但 不 是 以命名 寻 找而 是 以此对 象 的类为模板寻 找 , 如 果找到根则将 此对象加 入到 此根 的对 象簇之 中 , 否 则则 建立 以本对 象 的类为模板 的根 同 时加 入对 象 这样 建立 了数据库 的模式 在进 行 重用 时 , 首先将模 式类装入 堆之 中 , 然 后 生 成对 象 当 中有很 多 同一 类 的对 象时 , 则 要通过 的代数运 算求得结果 类对 象集 共 有 种 算子有 丰 富 的语 义表 达 能力 , 分 别 对对 象 的 关 联模式 集 进 行运 算 以产 生 新 的 关 联 模式集 我 们 通 过 对 进行修改扩 充 为 休 卿 , 其 中把 中的 子句 中的关系改为关联集 几种语句为 , 户 , 户 , , ,,… ” 例 如对类 … … 可 以有如下 查 询 , 一 其 中 是 类 的属 性 , 为类 的 属 性 , 关联 算子 语 言不 能直 接执 行 语 句 , 因 此 我们 通过服 务器 来执行 程序 , 并 将 结果返 回到 客户端 例如 ,, , 一 ,, 并 返 回 , , 等 类对 象 还 有 保 留提 交前现 场 , 开 始提交 , 恢复提交前现场 , 支持 的嵌套执行 客户端与服 务器 是 通 过 进行联接的 对象关系数据库 的实现方法 对 象 关系数据 库 的结构 如 图 对 象关系数据 库 由 和 交互 应用程序 解释器 持久 持久引擎 虚拟机 虚拟机 图 对象关系数据库的结构 两 部 分 组 成 , 由交互 , 解 释器 , 持久 引擎和 虚 拟机组 成 交互 处 理 交互 的解释 , 解 释器解 释 语句 、 持 久 引擎管理对象 的虚拟 内存与库 、 虚拟机管理类的装入 、 对象实例 的生成 、 语 句 中引用 的类 的方法 的解释 由应用 程 序 、 持久 和 虚 拟机 组 成 应 用 程 序通 过 持久 持久化对 象 不 停 的监 听 语 句解 释 的请 求 , 在收到 语 句 时为此 语句 的建立 解释线 程然后 继 续监 听 而 解 释 线程 启 动 , 首先 对 语句进行语法 分 析 , 然后 对 关联集求值 , 并 返 回结果 在 端 需要 虚拟 内存 的支持 个 由 个 表 组成 类名 表 , 类表 存放 类 的字 节码 , 对 象表 存 放 类 的持久对象 在 被打 开之后 个表都被读入 到虚存之 中 , 并 生 成虚 拟 地址 与 中地址 的对 照 表 , 如 图 所 示
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有