开始之前
IBM Data Studio 产品组合中包括 pureQuery,它是一个高性能数据访问平台,旨在简化 Java 数据访问的开发、管理、安全保障和优化。它由开发工具(在 Data Studio Developer 中)、一个简单直观的 API 和一个运行时(在 Data Studio purequery Runtime 中)组成。
在优化 DB2 数据的 Java 数据访问和保障访问的安全方面,pureQuery 的主要优点是开发和部署使用静态 SQL 的应用程序非常容易。当使用静态 SQL 时,执行 SQL 语句的准备步骤是在应用程序执行之前就进行的,因此可在运行时取得更好的性能。此外,静态 SQL 总是可以预先知道,因此不会受到恶意的或意外的 SQL 注入的影响,而这正是动态 SQL 的安全缺陷。要了解更多关于静态 SQL 在性能和安全性方面的优点,请参阅 参考资料。
以前,为了使用静态 SQL,需要用 pureQuery 带注释的方法样式来编写应用程序。在 1.2 版的 Data Studio Developer 和 Data Studio pureQuery Runtime 中,无论现有的 JDBC 应用程序是直接实现持久性,还是使用流行的框架(比如 Hibernate 和 JPA 来实现持久性),都可以使用静态 SQL,而不必重新编写代码。这个特性有时候被称作客户机优化(client optimization),因为启用静态 SQL 的过程是在 JDBC 客户机这一级发生的。我们将此特性称作pureQuery for JDBC applications。
启用应用程序的 pureQuery for JDBC applications 特性的常规过程是一个迭代的过程,由以下几个阶段组成:
- 计划。计划阶段的目的是确定应用程序是否适合使用 pureQuery。虽然从概念上讲可以为任何访问任意 DB2 数据服务器中的数据的 Java 应用程序启用该特性,但是应用程序必须满足一定的标准,例如先决条件(比如,应用程序在 JRE 1.5 或以上中运行)、安全方面(比如,DBA 或数据管理员同意使用基于数据库包的安全性,而不是基于表/视图的安全性)等等。
- 捕捉。PureQuery for JDBC applications 静态地处理 SQL 语句时,依赖于关于应用程序 SQL 语句及其相关元数据的信息。捕捉阶段收集必要的信息,并将其存储在一个元数据文件中。
- 配置。为了静态地执行 SQL,首先必须将它绑定到一个数据库包。在此之前,可以配置已捕捉的 SQL 文件,以指定一些设置,例如每个包中存放多少条 SQL 语句。
- 绑定。定义包的特征之后,需要将捕捉的 SQL 和相关的元数据绑定到一个或多个数据库(也可以将它存储到 DBRM 中,以后再部署它)。
- 执行和验证。成功地完成上述阶段后,pureQuery for JDBC applications 就配置好了,这就可以静态地执行 SQL 语句了。在验证过程中,质量保证专家验证应用程序是否按预期执行,并返回预期的结果。
注意:在通常的使用场景中,启用(enablement)过程是一个迭代的过程。
在本教程中,学习如何使用 Data Studio Developer,让一个简单的定制开发的 JDBC 应用程序可以使用 pureQuery for JDBC applications 特性。不过,您也可以使用自己选择的访问任意平台上的 DB2 数据的应用程序来学习本教程。客户机优化不需要访问源代码,但是本教程中的步骤假设您有那样的访问权。
本教程的目标是介绍使现有的 JDBC 应用程序支持 pureQuery 的步骤。为了使本教程简单一些,我们提供了一个小型的应用程序,这个应用程序直接使用 JDBC 实现持久性,它满足启用 pureQuery 所需的所有要求,并且很容易验证。
在本教程中,您将学习如何:
- 创建一个示例数据库,并将示例 JDBC 应用程序导入到 Data Studio Developer 1.2 中。
- 使用一个代码路径运行应用程序,并捕捉它的 SQL。
- 在 Java 源代码中查看示例应用程序的 SQL 和它与 Java 源代码的关系(可选)。
- 配置捕捉到的 SQL,并将其绑定到一个数据库包。
- 以静态 SQL 执行模式运行示例应用程序,并验证它是否具有正确的行为。
- 使用另一条代码路径运行应用程序,以捕捉剩下的 SQL;然后,使用静态 SQL 执行重新绑定并重新运行应用程序。
本教程是为拥有基于 Eclipse 的工具方面的基本经验的应用程序开发人员和 DBA 编写的。
为了运行本教程中的例子,需要安装 Data Studio Developer 1.2。另外还需要对 DB2 数据服务器的访问权。请下载免费的 DB2 Express-C,这是为社区提供的 DB2 Express Edition,它具有与 DB2 LUW 相同的核心数据 特性,并为构建和部署应用程序提供了坚实的基础。请参阅 参考资料小节 获取链接。

