概述

安装 InfoSphere® Optim™ pureQuery Runtime 后,您可以将您的 pureQuery 或支持 pureQuery 的 Java 应用程序部署到生成环境中。您还可以开发 DB2® CLI 和 Microsoft .NET 应用程序。

Java 应用程序的功能

对于使用 pureQuery API 的应用程序,InfoSphere Optim pureQuery 提供以下功能部件:

提供一个 API,可以用于对数据库、内存中集合和迭代器对象运行 SQL 语句

Java 平台提供了大量的数据结构和 API,用于处理内存中集合和来自各种数据源的外部数据。这些功能部件中的每一个都能够完美地解决特定类型的问题。pureQuery 还拥有一组自己独有的接口,用于检索和修改集合中的数据。例如,pureQuery 提供一个 API 用于 Java 数组、列表、映射和迭代器。每个 API 都会查询并在某些情况下更新集合中的数据。

同样,JDBC API 提供了一种使用 SQL 访问关系型 JDBC DataSource 对象和其他外部 JDBC DataSource 对象的方法。但是,pureQuery 允许应用程序使用一种或组合使用多种已知查询语言来访问所有这些数据源。

提供用于数据访问的简单编程模型
pureQuery 作为 JDBC 上的一个单独(薄)层运行。pureQuery 简化了查询、更新、存储过程调用以及与访问数据库有关的其他任务。pureQuery 运行于 Java 2 平台,Standard Edition 5.0 (J2SE 5.0) 和 Java 平台,Standard Edition 6 (Java SE 6) 之上。
只需少量的开发人员干涉就可自动将 SQL 数据映射到返回类型,但是您可以通过提供定制代码来创建复杂映射
pureQuery 为多种 Java 对象模式提供 SQL 查询结果和已返回对象之间的自动映射。对于查询结果和 Java 对象之间的复杂映射,提供了一个允许定制映射的可插拔退出接口。

您可以创建并注释返回包含表连接的 SQL 查询结果的 Bean。 查询结果返回为一组包含其他 Bean 实例的 Bean 集合。Bean 的层次结构反映了查询结果的一对一和一对多关系。例如,一个查询包含雇员表和部门表之间的连接。 查询返回指定给不同部门的雇员。 结果返回为一组部门 Bean,其中每个部门 Bean 实例都表示一个部门。每个部门 Bean 包含一个雇员 Bean 列表。每个雇员 Bean 实例包含雇员信息。

支持使用注释方法和内联方法开发 SQL 应用程序
注释方法支持用于在定制接口中定义自己的方法。可以使用 SQL 语句注释的定义来创建方法。通过使用注释方法来创建数据访问对象,可以开发遵循“数据访问对象 (DAO)”模式的应用程序。

内联方法支持用于利用 IBM 提供的数据接口中定义的方法。内联方法对于在应用程序运行时期间需要构造 SQL 语句的应用程序很有用。通过内联方法,SQL 语句可在方法调用中作为参数传递,这与 JDBC 中采用的方法类似。

提供管理静态运行 SQL 语句的支持。 您可以注释代码,以将接口中使用的 SQL 语句分组。您可以控制组的绑定过程。 您可以控制 pureQuery StaticBinder 实用程序使用的绑定选项。也可以控制为包含 SQL 语句的数据包生成的名称。

提供运行时动态和静态 SQL 支持
对于嵌入式 SQL 和到运行时才了解的特别 SQL,pureQuery 代码可结合使用动态 SQL 和标准 JDBC 驱动程序。
当 pureQuery 代码使用注解方法的编程风格和 DB2 数据库时,该代码还可使用静态 SQL。静态 SQL 具有以下优点:
避免使用动态语句高速缓存
通过使用静态 SQL,减少对 DB2 动态语句高速缓存的争用,并提高使用动态 SQL 的应用程序的性能。
一致的存取路径
通过在应用程序运行前锁定存取路径,静态 SQL 使得响应时间更具可预测性和稳定性。相反地,将在运行时计算动态 SQL 的存取路径。
潜在提高应用程序性能
静态 SQL 能够提高应用程序的性能。
  • 由于存取方案在运行时之前就已确定,因此无需在运行时准备 SQL 语句。
  • 由于不需要准备和描述每个语句,因此减少了客户机应用程序和数据库服务器之间的网络流量。
  • 静态 SQL 严格限制了谓词中所使用的主变量或参数的数据类型。这种严格限制可以确保输入数据与数据库中的目标类型保持一致。
提高安全性
您可以授予用户针对 DB2 数据包的 EXECUTE 特权,而不是针对数据库对象的特权。
简化数据包修改
创建 DB2 数据包版本使您可以重新捆绑数据包,而不会存在丢失优先存取路径的风险。
当在 z/OS® 上运行 pureQuery 应用程序时,支持 JDBC 类型 2 连接。
由于 JDBC 类型 2 驱动程序整合了 Java 和本机代码,因此类型2 连接通常比类型 4 连接更易执行。
未使用 pureQuery API 的应用程序可以利用客户机优化,它不同于其他支持静态运行 SQL 的技术:
  • pureQuery 客户机优化不使用预处理器,它不同于对嵌入式 SQL 使用预处理器的 COBOL 编程语言。
  • pureQuery 客户机优化不使用转换程序或定制程序,这不同于 SQLJ。
  • 您无需将 SQL 语句硬编码为应用程序的数据源。

客户机优化更改了 JDBC 驱动程序与应用程序的交互方式,因此不需要这些组件,也不必更改您的代码。

安全存储 pureQuery 数据
pureQuery 配置信息、pureQueryXML 数据和捕获的 SQL 数据可以存储在安全位置,并由 pureQuery Runtime 按需访问。pureQuery Runtime 可以配置为从安全位置检索 pureQuery 数据。pureQuery Runtime 可以将从使用 pureQuery 客户机优化的支持 pureQuery 的应用程序中捕获到的 SQL 数据存储在安全位置。
DB2 专用寄存器支持
从应用程序捕获 SQL 语句时,pureQuery 客户机优化将跟踪专用寄存器信息。pureQuery 客户机优化将记录常用及可能影响 SQL 语句行为的专用寄存器的专用寄存器值。在某些情况下,当两次发出相同的 SQL 语句时,如果专用寄存器的值在第一次和第二次运行该语句之间发生更改,那么该语句的行为会有所不同。

pureQuery Configure 实用程序可以根据与捕获的 SQL 语句一并记录的专用寄存器信息来生成绑定选项。使用 Configure 实用程序选项 -optionsFileForBind 可创建包含绑定选项的 StaticBinder 选项文件,这些选项基于捕获语句时记录的专用寄存器设置。选项文件还包含有关 pureQueryXML 文件中的语句集和 SQL 语句的信息和警告,以及专用寄存器信息。

该文件中的信息可帮助您指定一组绑定选项,这样在静态运行某个 SQL 语句时,其行为类似于从应用程序发出并动态运行该语句。当您绑定包含 SQL 语句的 DB2 数据包时,可使用 pureQuery StaticBinder 实用程序指定绑定选项。

pureQuery Runtime V2.2.0.3 及更高版本会将专用寄存器信息记录在 pureQueryXML 文件中。如果 pureQueryXML 文件是使用早于 V2.2.0.3 版本的 pureQuery Runtime 所创建,那么可能需要重新捕获某些 SQL 语句才能记录专用寄存器信息。

轻松管理 pureQueryXML 文件
以下功能部件可帮助您管理 pureQueryXML 文件中的 SQL 语句和语句集:
  • Configure 实用程序可以按 SQL 语句中的文本(例如,表名或列名)或按专用寄存器使用情况对 SQL 语句进行分组。
  • 对于在指定天数内应用程序没有发出的 SQL 语句,Configure 实用程序可以从 pureQueryXML 文件将其删除。当 pureQuery 属性 captureMode 设置为 ON 时,pureQuery Runtime 将更新应用程序发出 SQL 语句的时间。
  • Configure 实用程序可以在处理 pureQueryXML 文件之前或之后设置语句集的状态。语句集的状态可控制 Configure 实用程序是否尝试修改语句。如果使用 pureQueryXML 文件上的 StaticBinder 来绑定 DB2 数据库上的 SQL 语句,那么在语句集修改后,需要重新绑定该语句集中的 SQL 语句。
  • Configure 实用程序可以更改 pureQueryXML 文件中 SQL 语句的数据库位置名和模式名。
  • StaticBinder 实用程序可以在 pureQueryXML 文件中的 SQL 语句绑定过程返回错误时处理该语句。该实用程序可将语句标记为无效,或将其从文件除去。 如果语句标记为无效,那么语句将保留在文件中,但其视为与 isBindable 属性设为 false 时相同. 可以使用 Configure 实用程序将语句标记为有效,或除去标记为无效的语句。
  • Configure、Merge 和 StaticBinder 实用程序可以对输入 pureQueryXML 文件执行 XML 模式验证。
  • ManageRepository 实用程序可以生成报告,列出两个 pureQueryXML 文件之间的差异。通过将更新的 pureQueryXML 文件与原始文件进行比较,可以轻松查看对更新文件所做的更改。

用于 C 和 C++ 调用级接口 (CLI) 应用程序的功能部件

调用级接口 (CLI) 是用于关系数据库访问的 C 和 C++ 应用程序编程接口。 CLI 使用函数调用将动态 SQL 语句作为函数参数传递。

在为连接到 DB2 数据库或 Informix® 数据库的 CLI 应用程序启用 pureQuery 客户机优化之后,即可控制应用程序发出的 SQL 语句。例如,如果应用程序连接到 DB2 数据库,那么可以将应用程序配置为针对数据库静态运行 SQL 语句。您可以控制允许针对数据库运行的 SQL 语句。

pureQuery 客户机优化的优点包括:
  • 针对 DB2 数据库静态运行 SQL 语句。
  • 使用工具诊断 SQL 语句的问题,以追溯至应用程序源代码。
  • 使用优化语句替换执行欠佳的 SQL 语句。
  • 通过运行有限的 SQL 语句集来降低 SQL 注入攻击的风险。

您可以运行 SQL 语句,并使用 DB2 命令 db2cli 来验证 SQL 语句。 您可以运行带有 exec 选项的 db2cli 命令,以运行或验证位于一个文件中的 SQL 语句。也可以指定准备好文件中的 SQL 语句,但不运行以验证 SQL 语句。还可以捕获 pureQueryXML 文件中 db2cli 命令运行或验证的 SQL 语句。

Microsoft .NET 应用程序的功能

InfoSphere Optim pureQuery Runtime for Linux, UNIX, and Windows 提供了对改进 .NET 应用程序(包括 C# 和 VB.NET 之类的用任何基于 .NET 的语言编写的应用程序)的稳定性、安全性和可管理性的支持。

pureQuery Runtime 的优点包括:
  • 改进现有应用程序的服务质量
    • 提高性能
    • 锁定存取方案
    • 提高容量规划的准确性
  • 利用现有投资获得更多价值
    • 提高系统吞吐量
    • 加快问题解决
  • 增强安全性
    • 限制用户访问
    • 最大限度地降低冲突情况
    • 缩短审计准备时间

有关将 pureQuery Runtime for Linux, UNIX, and Windows 用于 .NET 的信息,请参阅 http://publib.boulder.ibm.com/infocenter/db2luw/v9r7/index.jsp?topic=/com.ibm.swg.im.dbclient.adonet.doc/doc/t0054569.html


反馈