J2EE与IBM对象-关系数据库 - 编程入门网
数目或不同类型 的参数。这类似于适用于 integer、decimal、float、double 或其混合类型的加法运算符( “+”),也类似于面向对象中的多态性。除了函数,这两种数据库还允许您创建 新的类型,以及通过使用表层次结构创建对象层次结构。所有这些功能共同允许您通过调整 数据库来配合业务环境,而不是牺牲您的设计来适应数据库。深入探讨您通过充分使用 IBM 数据库的功能所获得的所有商业优势已经超出了本文的范围。关于可扩展性如何有助于提高 竞争力的示例,请查阅本文最后所给出的一些参考资料。
IBM ORDBMS 数据库提供了 大量功能,可以简化软件开发,减少硬件需求,以及加快进入市场的步伐。您必须在设计中 善加利用,以便从中受益。IBM ORDBMS 不仅仅是一个持久性存储器,更是一条提高您生产率 和效率的路径。 非同小可的对象危机 理论上,以及在许多实际案例中,对于 持久对象的操作需要实例化该对象,对其进行操作,以及与持久性存储器保持同步。这就导 致了容器管理的持久性以及独立于数据库的思想: “使用容器管理的持久性的 好处是,实体 bean 可以在逻辑上独立于存储该实体的数据源。 …” Enterprise JavaBeans™ 规范,版本 2.1,第 143 页。 该规范还提到数据源可以是关系型的,也可以是非关系型的,如 IMS。当然还可以是 面向对象的数据库。 任何修改容器管理 bean 的交互都需要与该数据源保持同步,以 确保实体 bean 的一致视图。对 Enterprise JavaBean(EJB)使用 chatty 接口会显著地增 加数据库的交互量,从而可能导致性能问题。 “每次实例化一个对象”的 中心思想有可能会引起性能和容量问题。该问题不是仅限于容器管理的实体 bean 的使用中 ,而是普遍存在于面向对象方法中。让我们用一个简单的示例来加以说明。 假设有一家专门从事贷款发放的大型银行。它遍及多个区域,每个区域包括几十甚至上百 家支行。 图 5. 银行贷款机构 图 5 说明该银行对应多个区域,每个区域都有多个支行,而每个支行又进行多项贷款。 它还显示我们可以获得不同种类的贷款。 J2EE与IBM对象-关系数据库(7)时间:2011-04-13 IBM Jacques Roy如果该银行需要获得一份清单,列出那些在贷款中承担了过高风险的支行,它就会按区域 来收集该清单。每个区域将搜索其支行,找到那些风险过高的。而支行本身必须查询每一项 贷款的风险和贷款额,用以计算该支行的平均风险。 以下是一种适宜的对象方式:每个对象封装自身的信息和处理。支行要获得贷款风险的惟 一方法就是向该贷款查询这一信息。该方式比较合理,因为它消除了对象类型之间的紧密耦 合。对象间的通信取决于定义良好的接口。只要该接口保持不变,就可以修改其实现,且不 影响整个系统。 本例中,如果我们考虑:该银行遍及 10 个区域,每个区域有 100 家支行,而每家支行 又有 10,000 份贷款,我们总共创建了 1000 万多个对象来响应该查询。要求每份贷款返回 两个值:风险级别和贷款额。在区域和支行之间的通信中,这会在两个对象之间传递超过 2000 万条消息。最后从内存中删除这些对象需要进行额外处理。 所使用的数目(10/100/10,000)丝毫不过分,我们绝对可以想像将生成更大数量级对象 的系统。这很容易成为一个性能以及容量(例如内存)问题。若通过给应用程序服务器增加 节点来解决该问题,非但解决不了,反而会增加复杂性。 通过利用 DB2 和 IDS 等对象-关系数据库的长处,即使无法消除该问题,也可以有所缓 解。请记住,大多数面向对象人员仅仅将数据库看作持久性存储器。他们习惯于将所有处理 放在对象的代码中完成,事后才添加数据库。 如果考虑面向对象是何时成为主流的,我们就可以设想,现在绝大多数 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |