| 操作系统 办公 实用知识 设计 开发 WEB开发 移动开发 数据库 软件工程 网管 安全 管理 信息化 答疑 渠道 |
DB2 UDB for Linux, UNIX 和 Windows 中的 Java 开发概述简介 关系数据库在大多数需要持久数据存储的应用程序中扮演着重要角色,但它们却不是开发和选择各种编程模型、框架和体系结构背后的驱动力。应用程序开发的优先级通常由关系数据库管理系统(RDBMS)以外的因素决定,譬如对于特定任务,是选择 J2EE 还是 .NET 作为编程模型。 认识到您可能会青睐某种编程体系结构而别人可能会热衷于另外一种体系结构这一事实,DB2® Universal Database™ 采取的策略是提供包含您所做的任何选择的最佳集成。 本文专门讨论了 DB2 UDB 环境中的 JDBC 和 SQLJ 支持这一特殊主题。 DB2 UDB 应用程序开发方法 虽然这可能有点儿过于简单,但目前的应用程序开发却主要包含以下几种不同的编程类型: 使用 Java 基于 J2EE 编程模型开发应用程序。 DB2 UDB 的优点在于它支持上面的所有开发模型! 对于 Java™ 程序员而言,DB2 提供了两种应用程序编程接口(API):JDBC 和 SQLJ。正如 Java 2 标准版(Java 2, Standard Edition,J2SE)规范中所定义的那样,JDBC 是 Java 编程语言的必备组件。按照标准中所定义的,要编写能够访问 DB2 的 JDBC 应用程序,各种 Java 类和接口的实现是必需的。这种实现也称为 JDBC 驱动程序。DB2 UDB for Linux, UNIX® 和 Windows 为此目的提供了一整套 JDBC 驱动程序。JDBC 驱动程序分为旧的/CLI 驱动程序和新的通用 JDBC 驱动程序(Universal JDBC Driver)。 DB2 UDB 的 Java 支持包括对 JDBC 的支持,JDBC 是一个与供应商无关的动态 SQL 接口,该接口通过标准化的 Java 方法向您的应用程序提供数据访问。JDBC 类似于 DB2 CLI,因为您无须预编译应用程序代码,也无须将软件包绑定到 DB2 数据库。作为一个与供应商无关的标准,JDBC 应用程序提供了更多的可移植性 — 这是当今异构业务基础设施所必需的优点。在执行 JDBC 应用程序期间,驱动程序将针对当前连接的 DB2 数据库服务器验证 SQL 语句。访问期间的任何问题都会作为 Java 异常与相应的 SQLSTATE 和 SQLCODE 一起报告给应用程序。 SQLJ 是一个用于从 Java 应用程序进行数据访问的标准开发模型。SQLJ API 是在 SQL 1999 规范中定义的。新的通用 JDBC 驱动程序在一个实现中同时为 JDBC 和 SQLJ API 提供了支持。JDBC 和 SQLJ 可以在同一个应用程序中互操作。SQLJ 提供了独特的使用静态 SQL 语句进行开发以及在 DB2 包级别控制访问的能力。 DB2 的 Java 访问方法 DB2 对 Java 编程环境提供了丰富的支持。可以使用下列方法之一将 Java 类放入模块从而访问 DB2 数据: DB2 服务器 您可能会问“我该怎么开始?”。 首先,安装 DB2 UDB 应用程序开发客户机(DB2 UDB Application Development client),并将其连接到 UNIX、Linux 、Windows、z/OS™ 或 OS/400® 上的 DB2 UDB 数据库。如果您打算访问 DB2 UDB for z/OS 或 DB2 UDB for OS/400,那么请使用适合您开发环境的 DB2 Connect™ 产品。DB2 UDB 应用程序开发客户机包含开发 C、COBOL 和 Java 应用程序所需的所有驱动程序。 如果您打算使用 J2EE 应用程序服务器(如 WebSphere Application Server)来开发多层应用程序,那么每个应用程序服务器都需要 DB2 UDB 运行时客户机和 DB2 UDB 应用程序开发客户机。 在开发和测试了应用程序之后,下一步就是确定部署拓扑结构。在规范中定义了各种 JDBC 驱动程序体系结构类型。让我们来研究一下可用的各种类型的驱动程序、Java 开发工具箱(JDK)版本和 Java 运行时环境(JRE)。 JDBC 驱动程序揭密
JDBC 版本 JDBC 驱动程序被认证为 J2EE 解决方案的一个组件。驱动程序认证的结果总是发布在 Sun 兼容性网站上。 JDBC 驱动程序体系结构 Type 1 JDBC Type 1 驱动程序 图 1. JDBC Type 1 驱动程序
旧的/CLI JDBC 驱动程序在文件 db2java.zip 中提供。其实现包名称为 COM.ibm.db2.jdbc.app.DB2Driver。该驱动程序目前已被用于进行 J2EE 认证。其别名“app 驱动程序”源自于一种观念及其包名称,这种观念就是:此驱动程序将通过远程数据库的本地 DB2 UDB 客户机执行本地连接。 可以使用 JDBC Type 2 驱动程序来支持 JDBC 应用程序。WebSphere Application Server 同时支持这两种 Type 2 驱动程序。注:在将来的版本中不会对旧的/CLI Type 2 驱动程序进行增强。 图 2 显示了使用 JDBC Type 2 驱动程序的应用程序的典型拓扑结构: 图 2. 使用 JDBC Type 2 驱动程序的应用程序
图 3. 使用 Type 3 JDBC 驱动程序的典型应用程序方案
Type 3 驱动程序要求 db2java.zip 驱动程序总是处于与 DB2 Applet 服务器相同的维护级别。如果驱动程序在 applet 内使用,这就不是一个问题,因为浏览器会在应用程序执行期间下载相应的 db2java.zip 文件。许多客户使用 Type 3 驱动程序而不是 Type 2 驱动程序,以避免必需的 DB2 客户机安装和必需的 DB2 CATALOG DATABASE 命令,后者用于创建使用旧的/CLI 驱动程序进行 Type 2 连接所必需的数据库目录信息。目前,WebSphere Application Server 和其它 J2EE 服务器不支持 IBM Type 3 驱动程序,因为该驱动程序不支持分布式事务(JTA)。将来的版本不会对 Type 3 驱动程序进行增强。 我们鼓励使用通用 JDBC Type 4 驱动程序来替代 Type 3 驱动程序。 JDBC Type 4 驱动程序 请注意,通用 Type 2 和通用 Type 4 驱动程序具有相同的实现类名称。有两种方法可以区别 DB2 在内部将实例化哪个驱动程序: 使用连接特性来确定连接是否使用共享库(Type 2),或者驱动程序是否会启动来自 Java 应用程序的直接连接(Type 4)。 Type 2 URL 模式的示例:字符串“jdbc:db2:sample”。有关 DB2 服务器(“server1”)和端口(“50000”)的信息可以在 DB2 客户机编目目录中找到。 通用 JDBC 驱动程序是一种与驱动程序类型连通性或目标平台无关的抽象 JDBC 处理器。通用 JDBC 驱动器是一种与体系结构无关的 JDBC 驱动程序,用于进行分布式和本地 DB2 UDB 访问。因为通用 JDBC 驱动程序独立于任何特定 JDBC 驱动程序类型连通性或目标平台,所以它在一个 DB2 UDB 驱动程序实例中同时支持所有 Java 连通性(Type 4 驱动程序)和基于 JNI 的连通性(Type 2 驱动程序)。该驱动程序可以用于独立 Java 应用程序或多层应用程序。 重要:就 DB2 UDB V8.1.2 而言,通用 JDBC 驱动程序要求 CLASSPATH 中有许可证 JAR 文件和 db2jcc.jar 文件。以下是所需的许可证 JAR 文件: 对于 Cloudscape™ Network Server V5.1:db2jcc_license_c.jar 通用驱动程序可以通过使用预先安装在目标服务器上的必备存储过程,来查询数据库元数据目录及检索服务器错误消息文本: 对于 Linux、UNIX 和 Windows 上的 UDB V8,这些存储过程是预先安装的。 图 4 中显示了 Type 4 JDBC 驱动程序实现。注:从 Linux、UNIX 和 Windows 上的 Java 应用程序或 applet 连接到 DB2 for z/OS and OS/390 所用的通用 JDBC/SQLJ 驱动程序(Type 4 和 Type 2)需要适当的许可证文件(db2jcc_license_cisuz.jar)。该许可证文件是随 DB2 Connect 产品一起提供的。 图 4. Type 4 JDBC 驱动程序实现
Java 开发工具箱(JDK)和 Java 运行时环境(JRE) JDBC 2.0 和 JDBC 2.1 API 被分入两个包: 许多客户使用 1.3.1 环境开发和部署 Java 应用程序。这是目前推荐的 DB2 Java 应用程序环境。通用 JDBC 驱动程序需要 1.3.1 环境。注:在 JDK 1.4 环境中支持具有通用 JDBC 驱动程序的 JDBC 3.0 API 的一些计划正在进行之中。 常见问题及解答 问题 1:从哪儿可以得到 DB2 UDB JDBC Type 4 驱动程序? 答案 1:该驱动程序与 DB2 UDB 客户机一起提供,您也可以下载 DB2 UDB Express 或 DB2 UDB Personal Developers Edition 的试用版。 答案 3:在 DB2 UDB V8.1 中使用通用 JDBC 驱动程序支持可更新、可滚动游标。如果您正在使用 DB2 UDB for Linux、UNIX 和 Windows V7.x,那么您可以使用旧的/CLI 驱动程序和 setCursorName API 来模拟可更新、可滚动游标。我们建议您迁移到通用 JDBC 驱动程序。 问题 4:我能使用 DB2 JDBC Type 4 驱动程序连接到 DB2 UDB for z/OS and OS/390 吗? 答案 4:能,您将需要 DB2 Connect 许可证。 问题 5:哪一种 JDBC 驱动程序最快? 答案 5:答案因配置而异。如果 Java 应用程序与 DB2 服务器在同一台机器上运行,那么通用 Type 2 驱动程序将具有最佳性能,因为能够避免 TCP/IP 开销并因而提高吞吐量。当 DB2 服务器与 Java 应用程序在不同的机器上时,通用 Type 4 和 Type 2 驱动程序的性能不相上下。如果您试图改善 Java 应用程序的整体性能,那么您总是应该考虑编写更有效率的 SQL 语句,或者使用 SQLJ 或存储过程。 问题 6:在哪里可以找到有关 DB2 UDB 和受支持的 Java 环境的信息? 答案 6:查阅以下网站:http://www-3.ibm.com/software/data/db2/udb/ad/v8/java/ 。 问题 7:旧的/CLI 驱动程序和通用驱动程序之间有什么差异吗? 答案 7:从根本上来说,它们都提供 JDBC 2.1/J2EE 1.3 级别 API 支持。通用驱动程序提供 JDBC 3.0 规范的最新功能。驱动程序之间也略微存在一些差异,因为新的驱动程序基于称为 DRDA(分布式关系数据库体系结构,Distributed Relational Database Architecture)的开放数据库访问标准。这里记录了这些差异。 问题 8:我怎样才能够使用通用驱动程序跟踪 SQL 语句? 答案 8:可以使用 DataSource 或 Connection 特性进行跟踪。请参阅文档以获取更多信息。 问题 9:为什么应该考虑用 SQLJ 替代 JDBC,如何开始? 答案 9:请阅读题为考虑将 SQLJ 用于 DB2 V8.1 Java 应用程序的 DB2 开发者园地文章。
Paul C. Zikopoulos 是来自 IBM 数据管理软件部门的一名 IDUG 主要演讲人,并曾因此获奖。他有七年多 DB2 经验,并撰写了众多有关 DB2 的杂志文章。Paul 与人合著了以下几本著作:DB2: The Complete Reference、DB2 Fundamentals Certification for Dummies、DB2 for Dummies 和 A DBA''s Guide to Databases on Linux。Paul 是一名 DB2 认证高级技术专家(DB2 Certified Advanced Technical Expert,DRDA 和 Cluster/EEE),他还是 DB2 认证的解决方案专家(DB2 Certified Solutions Expert,商业智能和数据库管理)。可以通过 paulz_ibm@msn.com 与他联系。
今日推荐
|
重点推荐
领军企业技术文库
+更多领军技术文库
最新专题
电子杂志订阅
| ||||||||