首页 »数据库 » oracle面向对象:基于Oracle的面向对象技术入门基础简析开发者网络Oracle »正文
oracle面向对象:基于Oracle的面向对象技术入门基础简析开发者网络Oracle
来源: 发布时间:星期二, 2008年12月23日 浏览:2次 评论:0
正在看 ![](/icons/52451de.gif) ORACLE教程是:基于Oracle ![](/icons/52451de.gif) 面向对象技术入门基础简析开发者网络Oracle ![](/icons/52451dou2.gif) ![](/icons/52451yi.gif) 、概述 对象是Oracle8i以上版本中 ![](/icons/52451de.gif) ![](/icons/52451yi.gif) 个新 ![](/icons/52451de.gif) 特性 ![](/icons/52451dou.gif) 对象实际是对 ![](/icons/52451yi.gif) 组数据和操作 ![](/icons/52451de.gif) 封装 ![](/icons/52451dou.gif) 对象 ![](/icons/52451de.gif) 抽象就是类 ![](/icons/52451dou2.gif) 在面向对象技术中 ![](/icons/52451dou.gif) 对象涉及到以下几个重要 ![](/icons/52451de.gif) 特性: 封装性 通过对数据和操作 ![](/icons/52451de.gif) 封装 ![](/icons/52451dou.gif) 将用户关心 ![](/icons/52451de.gif) 数据和操作暴露出来作为接口 ![](/icons/52451dou.gif) 其他数据和操作则隐藏到对象内部 ![](/icons/52451dou.gif) 这样便于用户使用和维护 继承性 对象具有继承性 ![](/icons/52451dou.gif) 通过这 ![](/icons/52451yi.gif) 特性可以增强 ![](/icons/52451chengxu.gif) ![](/icons/52451de.gif) 可扩展性 ![](/icons/52451dou.gif) 适合大型项目 ![](/icons/52451de.gif) 开发 多态性 同 ![](/icons/52451yi.gif) 操作在运行时刻有区别 ![](/icons/52451de.gif) 对象来引用 ![](/icons/52451dou.gif) 则其执行结果是不 ![](/icons/52451yi.gif) 样 ![](/icons/52451de.gif) ![](/icons/52451dou2.gif) 这 ![](/icons/52451yi.gif) 特性称的为多态性 正是 ![](/icons/52451yinwei.gif) 面向对象 ![](/icons/52451de.gif) 诸多优势 ![](/icons/52451dou.gif) Oracle公司在8.0版本以后就加入了对这 ![](/icons/52451yi.gif) 特性 ![](/icons/52451de.gif) 全面支持 ![](/icons/52451dou.gif) 下来 ![](/icons/52451de.gif) 部分重点讲述在Oracle中 ![](/icons/52451de.gif) 面向对象 ![](/icons/52451chengxu.gif) 设计 2、Oracle中 ![](/icons/52451de.gif) 面向对象 ![](/icons/52451chengxu.gif) 设计 既然对象具有这么多 ![](/icons/52451de.gif) 优点 ![](/icons/52451dou.gif) 那么在Oracle数据库如何引用它呢?Oracle中 ![](/icons/52451de.gif) 对象定义分两步进行: 首先定义对象类型 ![](/icons/52451dou2.gif) 定义对象类型跟定义包类型完全 ![](/icons/52451yi.gif) 样 ![](/icons/52451dou.gif) 即分为对象类型头(或称为对象规范标准 ![](/icons/52451dou.gif) spec ![](/icons/52451if.gif) ication)和对象类型体(body) ![](/icons/52451dou2.gif) 对象类型头包括了对象类型 ![](/icons/52451de.gif) 属性和思路方法 ![](/icons/52451de.gif) 声明 ![](/icons/52451dou.gif) 而对象类型体则包含了对象类型具体 ![](/icons/52451de.gif) 实现 例如 ![](/icons/52451dou.gif) 定义 ![](/icons/52451yi.gif) 个empObj对象类型 ![](/icons/52451dou.gif) 代码如下: 特别需要注意 ![](/icons/52451de.gif) 是 ![](/icons/52451dou.gif) 如果对象没有成员 ![](/icons/52451hanshu.gif) 部分 ![](/icons/52451dou.gif) 那么此对象类型 ![](/icons/52451de.gif) 定义只有对象类型头部分 然后定义对象例子 ![](/icons/52451dou2.gif) 定义了对象类型后就可以直接定义它 ![](/icons/52451de.gif) 例子了 ![](/icons/52451dou.gif) 比如定义 ![](/icons/52451yi.gif) 个empObj例子对象 ![](/icons/52451dou.gif) 代码如下: 经过这两步的后就可以引用对象例子 ![](/icons/52451de.gif) 属性和思路方法了 ![](/icons/52451dou.gif) 引用符号为“.” ![](/icons/52451dou.gif) 比如 另外 ![](/icons/52451dou.gif) 在 ![](/icons/52451chushi.gif) 化无成员 ![](/icons/52451hanshu.gif) ![](/icons/52451de.gif) 对象时可以直接以构造 ![](/icons/52451hanshu.gif) ![](/icons/52451de.gif) 形式进行 ![](/icons/52451chushi.gif) 化 ![](/icons/52451dou.gif) 注意 ![](/icons/52451dou.gif) 这个时候不需显式 ![](/icons/52451de.gif) 定义构造 ![](/icons/52451hanshu.gif) ![](/icons/52451dou2.gif) 比如 ![](/icons/52451dou.gif) ![](/icons/52451chushi.gif) 化上面v_empObj1对象(假设无成员 ![](/icons/52451hanshu.gif) ![](/icons/52451de.gif) 情况下才能进行这种 ![](/icons/52451chushi.gif) 化操作), 代码如下: 由于Oracle数据库是关系型数据库 ![](/icons/52451dou.gif) 其存储数据是以 2维表 ![](/icons/52451de.gif) 形式进行 ![](/icons/52451de.gif) ![](/icons/52451dou.gif) 而对象是对数据和操作进行封装 ![](/icons/52451de.gif) ![](/icons/52451yi.gif) 个实体 ![](/icons/52451dou.gif) 其存储信息往往是多维信息 ![](/icons/52451dou.gif) 那么对象在Oracle数据库中 ![](/icons/52451de.gif) 存储是如何进行 ![](/icons/52451de.gif) 呢?(这里补充 ![](/icons/52451yi.gif) 点 ![](/icons/52451dou.gif) PL/SQL ![](/icons/52451chengxu.gif) 块中声明 ![](/icons/52451de.gif) 对象是临时对象 ![](/icons/52451dou.gif) 在超出其作用区域后系统将自动收回其分配 ![](/icons/52451de.gif) 资源 ![](/icons/52451dou.gif) 但是如果需要保存对象 ![](/icons/52451de.gif) 信息 ![](/icons/52451dou.gif) 就必须将其存储在数据库中) 事实上 ![](/icons/52451dou.gif) 对象在Oracle数据库中 ![](/icons/52451de.gif) 存储形式分为两种: 1. 对象列 ![](/icons/52451dou2.gif) 即可以将数据表中 ![](/icons/52451de.gif) 列 ![](/icons/52451de.gif) 数据类型定义为 ![](/icons/52451yi.gif) 个对象类型 ![](/icons/52451dou.gif) 这样对象就可以存储在数据列中了 ![](/icons/52451dou2.gif) 比如定义 ![](/icons/52451yi.gif) 个表table1 ![](/icons/52451dou.gif) 其中emp列可以用来存储对象 2. 对象行 ![](/icons/52451dou2.gif) 即可以创建 ![](/icons/52451yi.gif) 个对象表 ![](/icons/52451dou.gif) 其中每 ![](/icons/52451yi.gif) 列就表示对象中 ![](/icons/52451de.gif) ![](/icons/52451yi.gif) 个属性 ![](/icons/52451dou.gif) 这样 ![](/icons/52451yi.gif) 条行记录就是 ![](/icons/52451yi.gif) 个对象了 ![](/icons/52451dou2.gif) 比如定义 ![](/icons/52451yi.gif) 个emp表如下: 这样emp表 ![](/icons/52451de.gif) ![](/icons/52451yi.gif) 个记录就是 ![](/icons/52451yi.gif) 个empObj对象 ![](/icons/52451dou.gif) 插入 ![](/icons/52451yi.gif) 个表 ![](/icons/52451de.gif) 操作就可以为: 注意 ![](/icons/52451dou.gif) 这里表中列类型和对象 ![](/icons/52451de.gif) 属性类型应该 ![](/icons/52451yi.gif) ![](/icons/52451yi.gif) 对应 ![](/icons/52451dou.gif) 另外这样存储将忽略对象 ![](/icons/52451de.gif) 成员 ![](/icons/52451hanshu.gif) ![](/icons/52451de.gif) 信息
[NextPage] 3、对象操作和比较 可以采用DML语句对对象进行操作 ![](/icons/52451dou.gif) 其操作 ![](/icons/52451de.gif) 语法跟 ![](/icons/52451yi.gif) 般 ![](/icons/52451de.gif) 数据类型完全 ![](/icons/52451yi.gif) 样 ![](/icons/52451dou.gif) 比如在table1表中返回对象为empObj(10002,'mike',3000) ![](/icons/52451de.gif) 记录: 如果需要进行对象 ![](/icons/52451de.gif) 大小比较 ![](/icons/52451dou.gif) 那么用 ![](/icons/52451yi.gif) 般 ![](/icons/52451de.gif) 思路方法就很难处理 ![](/icons/52451dou.gif) 毕竟对象含有 ![](/icons/52451yi.gif) 组属性 ![](/icons/52451dou.gif) 无法进行组合比较 ![](/icons/52451dou2.gif) 可以采用向对象加入map思路方法和order思路方法来解决此问题 ![](/icons/52451dou.gif) 前者是通过将对象某 ![](/icons/52451yi.gif) 属性返回代表对象 ![](/icons/52451de.gif) 值班来比较大小 ![](/icons/52451dou.gif) 后者是通过比较两个对象的间某个属性 ![](/icons/52451de.gif) 值班来获取对象 ![](/icons/52451de.gif) 大小 ![](/icons/52451dou2.gif) 由于两者 ![](/icons/52451de.gif) 相似性 ![](/icons/52451dou.gif) 这里以用途更广 ![](/icons/52451de.gif) map成员 ![](/icons/52451hanshu.gif) 为为例示范如下: 这样定义了map ![](/icons/52451hanshu.gif) 后 ![](/icons/52451dou.gif) 对empObj对象大小 ![](/icons/52451de.gif) 比较实质转化为对各个对象 ![](/icons/52451de.gif) emp_id属性大小 ![](/icons/52451de.gif) 比较 ![](/icons/52451dou.gif) 在实际操作中 ![](/icons/52451dou.gif) 应该根据实际情况来返回关心 ![](/icons/52451de.gif) 数据 ![](/icons/52451dou.gif) 以进行对象大小比较 ![](/icons/52451de.gif) 操作 4、小结 通过前面内容 ![](/icons/52451de.gif) 介绍 ![](/icons/52451dou.gif) 大家应该对Oracle数据库 ![](/icons/52451de.gif) 面向对象 ![](/icons/52451de.gif) 特性有 ![](/icons/52451yi.gif) 个初步 ![](/icons/52451de.gif) 认识 ![](/icons/52451dou.gif) 充分利用Oracle ![](/icons/52451de.gif) 这 ![](/icons/52451yi.gif) 特性 ![](/icons/52451dou.gif) 可以将面向对象 ![](/icons/52451de.gif) 重用性 ![](/icons/52451dou.gif) 可扩展性等优点引入到数据库中 ![](/icons/52451dou.gif) 提高了数据库 ![](/icons/52451de.gif) 运行性能 上 页
相关文章
读者评论
发表评论
|
|