JDBC,
点击次数:36 次 发布日期:2008-11-09 08:43:37 作者:源代码网
|
by Dr. Wilson Cheng and Dr. Pinaki Poddar 原文:http://www.ftponline.com/javapro/2003_07/online/wcheng_07_25_03/default.aspx 本文中的前三部分覆盖了在企业应用中选择对象持久技术所必须考虑的一些因素。也就是曾经讨论过的映射支持和JDBC,CMP和JDO域模型;对象查询机制;事务状态管理;性能和伸缩性;以及可移植性。(参见 "Choose the Right Object Persistence" (Java Pro online, July 16, 2003); "More Object Persistence Choice Factors" (Java Pro online, July 23, 2003); and Factor In Performance and Portability" (Java Pro online, July 30, 2003.) 在最后的部分,我们来看看另外一个因素,机制,然后总结了对象持久和应用类型的配合,以帮助你做出正确的选择。 机制机制覆盖了应用开发中使用对象持久服务的人力和技术资源需求的实践方面,通常称作develop-deploy-run-test-debug周期。 JDBC是关系(数据库)应用的低成本(方案)。JDBC开发很简单,只是将域对象映射到数据存储上,这种映射是直接的、不做性能优化的。JDBC应用具有适中的开发周期,因为JDBC驱动程序易于安装。不需要像EJB编译或JDO增强这样的中间步骤,不需要独立的映射规范,并且JDBC应用不需要应用服务器的支持。 软件开发网 www.mscto.com 然而,JDBC对SQL的完全依赖导致了非安全的编程。SQL语句以String参数传递给JDBC API,这意味着Java编译器不能验证这些语句的正确性。SQL命令中的许多句法和语义问题(比如误拼了表名)只能在运行时才能被发现。JDBC开发和对象语言的在编译时监测错误的类型安全相抵触。 CMP开发是昂贵的,因为域对象必须遵守企业JavaBean(EJB)的设计。EJB开发也是高度非线性的。一个EJB的规格分散在home接口(如何创建);远程接口(如何与之交互)实现;部署描述符(如何配置);特别对于CMP还包括它的映射定义(如何映射到数据存储)。 分散在这些不同地方的所有这些规格说明必须协调一致。有的规格说明在编译时验证--例如,远程接口中的某个业务方法是否在Bean实现类中实现了。其它仅在部署时才用到--例如,被映射的列名是否存在于数据存储。开发过程中的发现的一个错误可以引发新一轮develop-deploy-run-test-debug周期。并且,因为CMP需要应用服务器支持,应用服务器通常需要重启。 JDO是低廉的解决方案。在这三种技术中,JDO应用提供了最大的开发易用性。应用的代码更加简化,因为JDO驱动程序处理新对象的自动持久,映射到数据存储,标示事务中提交的对象。开发人员只需编码域对象的业务逻辑;域对象和数据存储之间的交互对应用几乎是透明的。 使用JDO定义域模型比使用CMP更加直接。使能JDO驱动程序管理域对象不需要开发人员指定任何接口或者继承任何类。所需要的只是指定映射配置,并运行增强处理(enhancement process,译者注:JDO增强器读取编译的java文件(.class文件),并且应用元数据文件中定义的持久化规则)。 如何选择选择适于你的技术对象持久技术的探讨可以使你对多种持久技术更加了解,为你的企业应用选择正确的持久技术。来考虑关于JDBC,CMP和JDO一般应用可以帮助你做出正确的选择。我们把几种持久技术和三种类型的企业应用配对:以RDBMS为中心的应用,以应用服务器为中心的应用,和以对象为中心的应用。我所做的这种配对并不意味着给定的技术不适于其它类型的应用或者不能和其它类型的应用一起很好的工作。例如,你可以结合使用JDO和Session Bean,以利用JDO的优势同时利用J2EE应用服务器的基础设施服务。 JDBC是以RDBMS为中心的。JDBC适用于以RDBMS为中心的应用。以RDBMS为中心的应用是指那些域对象的设计主要由关系型数据库模式驱动的应用。许多应用都属于这种类型,因为RDBMS是最普遍的数据存储。 如果你需要充分利用RDBMS的计算功能,比如聚合查询,JDBC是一个好的选择。因为JDBC和数据库模式紧密耦合,所以如果应用的可移植性不是主要考虑的问题,如果数据库的模式非常稳定,如果不需要和非RDBMS数据存储交互,那么,你应该选择JDBC。在下面情况下,JDBC也是比较适合的:事务语义比较简单,主要是只读操作,不需要高度的可配置性,并且提交闭包(commit closure)易于确定。因为JDBC应用必须显式地同步到数据存储的事务实体的状态。 JDBC在基于Web、以用户显式为中心的应用,以及基于已存在的RDBMS的报表应用中非常流行。这类应用主要是只读访问的,并且需要快速开发。它们的域对象模型通常和RDBMS模式紧密一致。另外,JDBC对客户端缓存的缺乏使得它对于对可扩展性要求较高的应用变得不适合。 CMP是以应用服务器为中心的。CMP依赖于J2EE应用服务器的功能。以应用服务器为中心的应用依赖于J2EE的基础设施服务。CMP是众多J2EE服务中的一种。EJB应用的其它特征包括跨越应用服务器群集的负载均衡,事务语义的声明式的控制,部署时期安全访问控制,多种协议的远程访问,以及消息支持。如果应用服务器的基本特性对你非常重要,那么你应该选择使用CMP和EJB。EJB开发是昂贵的,但是如果业务需求需要应用服务器的这些特性支持,J2EE提供的这些服务就可以平衡EJB开发所需要的额外的开销。CMP对象持久支持本身并不足以让你为你的企业应用选择使用EJB和应用服务器。 JDO是以对象为中心的。JDO是以对象为中心的应用的恰当之选。以对象为中心的应用是指那些域对象模型需要高级的对象模型概念,数据存储访问主要是可导航的,计算逻辑由对象的Java方法的行为所表达,而不是RDBMS的SQL语句。JDO具有复杂的对象管理和事务状态管理。以对象为中心的应用易于开发,并且在模式或者数据存储技术变化时具有高度的可移植性。如果你的应用必须和多种类型的数据存储一起工作,你应该考虑JDO。 许多业务域,比如电信路由,财务数据模型,VLSI设计,使用图和树是它们对象模型的主要特征。这些应用也需要复杂的算法,这些算法需要在相互连接的对象之间的导航访问。例如,在图中寻找路线,在规则引擎上执行流程图(flowchat),或者外币兑换工具等都是图-树(graph-and-tree)问题。JDO的独有特性,比如可达性持久(persistence-by-reachability),该特性可以用于监测对象图的闭包,或者通过导航隐性地在数据存储提前数据等,对这类应用都非常有用。 关于作者Dr. Wilson Cheng, vice president engineering, directs product development strategies and initiatives at Versant Corporation; has led interdisciplinary, intercompany teams to improve cross-platform, e-business solutions at Oracle; and was0 the chief architect for the object-replication project for Jasmine at Fujitsu. Cheng published more than 20 technical articles in various international conferences and was the program chair for the sixth annual Australian Conference on Parallel and Real-Time Systems. Dr. Pinaki Poddar, principal software engineer for Versant Corporation, works in the area of object persistence and J2EE integration. He designed enterprise applications for the health care and finance industries and developed a Hindi speech recognition system in his past life. He is also a contributor to www.openadaptor.org, an open source project for enterprise application integration. Reach Dr. Cheng at wcheng@versant.com, and reach Dr. Poddar at ppoddar@versant.com. 源代码网推荐 源代码网供稿. |
