IBM Optim pureQuery Runtime
IBM® Optim™ pureQuery Runtime 为 Java™ 持久性 API (JPA) 提供另一方法来访问数据库。PureQuery 支持静态结构化查询语言 (SQL)。PureQuery 仅受 OpenJPA 和 WSJPA 持久性提供程序支持。
关于此任务
Java EE 和 Java SE 环境中的 JPA 为 Purequery 运行时环境提供可选支持。PureQuery 是一个高性能 Java 数据访问平台,它帮助管理访问数据的应用程序。PureQuery 提供一组备用 API 来代替 Java 数据库连接 (JDBC) 访问 DB2® 和 Informix® 数据库。
要在应用程序服务器上使用此功能,必须安装 Data Studio pureQuery Runtime V1.2 或更高版本。如果您计划从管理控制台或者使用 wsadmin 工具来执行 DB2 绑定命令,那么必须有 pureQuery V1.2 或更高版本。有关更多信息,请参阅有关安装 pureQuery Runtime 的 IBM Optim pureQuery Runtime 信息中心主题。
可以动态方式使用 pureQuery。pdqxml 文件位置是由数据源或连接 URL 上的 pdqProperties 属性指定的。有关更多信息,请参阅“以动态方式使用 pureQuery”主题。
PureQuery 使用 DB2 包。这些程序包由一个或多个 SQL 语句的信息组成,并且存储在 DB2 目录中。要创建包,用户必须先对 JPA 应用程序运行 wsdbgen 命令。wsdbgen 命令将创建 persistence_unit_name.pdqxml 文件。此文件包含预先生成的 SQL 语句,用于对 JPA 实体执行 Create、Update、Delete、Retrieve、NamedQueries 和 NamedNativeQueries 操作。必须对数据库绑定 persistence_unit_name.pdqxml 文件。将生成相关联的 DB2 包并以静态方式在运行时启动 SQL 语句。此 persistence_unit_name.pdqxml 文件必须包括到应用程序 Java 归档 (JAR) 文件中。
应用程序服务器通过 ejbdeploy SQLj 选项提供对 Enterprise JavaBeans (EJB) 2.x 及更高版本实体 bean 的静态 SQL 支持。对于 JPA,此功能通过 pureQuery 提供。
使用 pureQuery(而不是 JDBC 和 SQLJ)有若干优点。静态 SQL 提供了更完善的安全性以及数据访问控制,这是因为,只授权应用程序执行已知的 SQL。在 DB2 服务器上,静态 SQL 能够避免对 SQL 语句进行运行时解析和优化,从而实现更好的资源利用率。
- db2jcc_license_cisuz.jar
- db2jcc_license_cu.jar
- pdq.jar
- pdqmgmt.jar
- 不支持通过 FetchPlan API 或通过 wsjpa.ConnectionFactoryProperties 的属性插件字符串指定的 QueryTimeout 属性。如果指定了 QueryTimeout 值,那么此值将被忽略。
- 不支持通过 FetchPlan API 指定 QueryTimeout 属性。如果指定了 QueryTimeout 值,那么此值将被忽略。
- OpenJPA 大型结果处理将 JDBC API 用于可滚动游标。
- JPA 将 pureQuery 属性 pdq.executionMode 设置为值 STATIC。
- 除了包括 JDBC 驱动程序 JAR 文件以外,JDBC 提供程序配置还必须包括用于 pureQuery 运行时环境的 JAR 文件。
- OpenJPA 提供支持以允许应用程序在运行时以编程方式访问和更改 FetchPlan。更改访存方案可能会生成 wsdbgen 命令在应用程序构建时未生成的 SQL。发生这种情况时,将动态地执行 SQL,而不是使用数据库程序包中的静态 SQL。
- 如果用户更改了应用程序查询、实体映射或持久性属性,请再次运行 wsdbgen 命令并进行绑定。此过程将生成并绑定经过更新的数据库程序包。
- 除了 UPDATE 语句的 SET 表达式值以外,JPA 查询(包括 EJB SQL 查询和本机 SQL 查询)中的输入参数值不能是 NULL 值。要在 SELECT、UPDATE 或 DELETE 的 WHERE 子句中搜索 NULL 值,请改为输入 is null 谓词。