当前位置: 老葡京网站娱乐 > 数据库 > db2教程 > 正文

DB2 Magazine:快速数据访问的捷径

时间:2009-12-12 IBM.COM Rafael A. Coss

老葡京网站娱乐 www.sdguanhua.com Java无处不在。如果您是一名应用程序开发人员,那么您很可能正在使用Java进行开发。如果是这样,您应该知道这样的开发并非总是那么有趣。

使用Java Database Connectivity(JDBC)创建应用程序需要很多的步骤,其中不少步骤都比较麻烦。您不仅需要创建一个Java 数据访问对象层,还需要处理CRUD(create, replace, update, delete)SQL操作。为此,通常不得不使用两套工具:一套用于Java 开发,另外一套用于数据库CRUD 操作。如果有一套工具可以同时处理这两种工作,不是更方便吗?IBM 也这么认为,并着手创建了这样的工具。这个名为pureQuery(之前的代码名称为“JLINQ”)的新的高性能平台包括用于应用程序的开发工具、API 和高级运行库。IBM 的 pureQuery 是为简化访问数据的应用程序的开发和管理而设计的。它对应用程序生命周期中的开发、部署、管理和治理等各个阶段都有帮助(详见图 1)。

图 1. pureQuery 体系结构概览

pureQuery 工具、API 和运行时环境提供了对数据库中的数据以及内存中的 Java 对象的访问。作为 IBM Data Studio 工具集的一个组件,一个公共的数据库应用程序开发和管理平台, pureQuery 提供了高级的 Java 数据访问功能,并真正避免了 JDBC 编程,因为它将查询语言与 Java 相集成。

数据访问 API 的问题

Java 开发人员可以选择多种 Java 数据访问 API 来构建应用程序,从 JDBC 到 Java Persistence Architecture(JPA)。这些 API 可以分为两大类:直接 SQL 访问和托管对象。每种方法都有其支持者和反对者。图 2 总结了每种方法的优缺点。

图2. 几种数据访问方法比较

直接 SQL 访问很好理解。它便于控制发出的 SQL,从而提高 SQL 的性能。但是,JDBC 开发过程会比较单调乏味,并耗时较长。在直接 SQL 访问方法学中,Java 程序员必须将结果集从 JDBC 映射到 Java 对象,并创建语句和绑定参数占位符。为获得最佳性能,开发人员必须掌握 JDBC API,并利用批处理和结果优化等特性。为提高 JDBC 性能,有些人可能会考虑 SQLJ;但是,这种选择要求开发人员重新编写数据访问层。

JDBC 开发的单调乏味促使对象关系映射(ORM) 框架问世,该框架提供一个数据访问抽象层。利用 ORM 通??梢愿崴傻卮唇ㄊ莘梦什?。但是,ORM 对发出的 SQL 的控制比较有限,而且,它们给运行时性能问题的诊断加多了一层的复杂性。调优和诊断变得更加困难,因为开发人员无法再控制将什么样的 SQL 发送到数据库;因此,难以更改 SQL 或者决定由哪个应用程序发出 SQL。

IBM 创建了 pureQuery,以解决这些方法的局限性。pureQuery 提供了一个具有 SQL 智能的 Java 编辑器,但是它并不是另一种类 SQL 的语言——它是一种可以以声明的方式查询关系数据库以及 Java 集合和数据库缓存的语言。扩展的 Java 编辑器包括一个集成的 SQL 编辑器,开发人员可以像编辑 Java 那样利用代码完成、验证和执行辅助等特性。此外,IBM 正在致力于通过 pureQuery 增强对 JPA 的支持。

洞察 pureQuery

pureQuery 简化了 Java 数据访问应用程序整个开发周期(开发、部署、管理和问题诊断)中与数据服务器(尤其是对于 IBM 数据服务器)和 Java 对象相关的工作。pureQuery 运行时可以与所有具有 JDBC 驱动程序的数据库打交道,并提供了与所有版本的 DB2 和 Informix Dynamic Server(IDS)的附加工具的集成。您可以选择和 JPA(一种 J2EE 标准)或 Spring 和 iBatis 等流行的开源项目一起使用 pureQuery。pureQuery 与最近宣布的 Project Zero 计划 —— zero.data 中的底层技术——相集成。 pureQuery 技术将 SQL 编辑带入到 Java 开发环境中。

简言之,pureQuery 使很多与 Java 相关的数据访问编程任务变得容易很多。它提供了一个良好的环境,可帮助您在开发周期中尽早发现问题,并从数据库一直追踪回应用程序源代码??梢酝ü嗤?Java API 同时使用静态和动态 SQL。对静态 SQL 的支持改善了问题诊断和治理。DB2 DBA 应该理解静态 SQL 访问对于应用程序性能、应用程序管理和数据访问安全(治理)的好处。

pureQuery 简化并统一了所有数据访问的实现。它并没有强迫您使用特定的 API(例如 EJB2、JPA、Spring 或 iBatis),但确实为某些用于访问数据的已有 API 的实现提供了便利。利用 pureQuery,可以直接在 Java 中编写数据访问代码。在编写查询时,可以获得设计时语法和模式检查以及更好的工具支持(例如代码完成/辅助)。

IBM Data Studio 解决方案将很多重复的 JDBC 和对象构造任务自动化。例如,pureQuery 的SQL 智能可以帮助您在开发过程中完成 SQL 语句。

SQL 编辑器集成(如图 3 所示)包括了以下特性,以提供对语义和语法验证的支持:

设计时编译

智能内容辅助

语法着色

图 3. SQL 编辑器集成

直接在 Java 编辑器中测试 SQL,这可以提高生产率;您可以在数据库上快速地测试 SQL,并标记错误,就像处理 Java 编程错误一样。

通过使用 pureQuery,可以缩短 Java 编辑-编译-调试开发周期中的 SQL 周期。您不必等到运行时就可以知道一个查询字符串是否格式良好,或者是否将返回错误。图 4 显示了 pureQuery 如何在 Eclipse Java Perspective 中像对待 Java 错误一样标记 SQL 错误。

图 4. Eclipse Java Perspective 中 pureQuery 的错误标记