指引网

当前位置: 主页 > 编程开发 > Java >

用DB2 UDB版本8开发企业Java应用程序

来源:网络 作者:佚名 点击: 时间:2017-11-14 05:13
[摘要] DB2 JDBC 技术 按照 JDBC 2 规范,有四种类型的 JDBC 驱动程序体系结构: 类型 1 — 这类驱动程序将 JDBC API 作为到另一类数据访问 API 的映射来实现,如开放式数据库连接(ODBC)。这类驱动程序通常
DB2

DB2 JDBC 技术

  按照 JDBC 2 规范,有四种类型的 JDBC 驱动程序体系结构:

  • 类型 1 — 这类驱动程序将 JDBC API 作为到另一类数据访问 API 的映射来实现,如开放式数据库连接(ODBC)。这类驱动程序通常依赖本机库,这限制了其可移植性。JDBC-ODBC 桥驱动程序就是类型 1 驱动程序的示例。
  • 类型 2 — 这类驱动程序部分用 Java 编程语言编写,部分用本机代码编写。这类驱动程序使用专门针对所连接数据源的本机客户机库。同样,由于使用本机代码,所以其可移植性受到限制。
  • 类型 3 — 这类驱动程序使用纯 Java 客户机,并使用独立于数据库的协议与中间件服务器进行通信。然后,中间件服务器将客户机请求传给数据源。
  • 类型 4 — 这类驱动程序是用纯 Java 语言编写,实现针对特定数据源的网络协议。客户机直接与数据源连接。

  DB2 版本 8 支持类型 2、3 和 4 的 JDBC 驱动程序。前一个发行版中的 JDBC 驱动程序构建于 DB2 CLI(调用层接口,Call Level Interface)之上。DB2 版本 8 的类型 2 和类型 3 驱动程序继续使用 DB2 CLI 接口来与 DB2 UDB 服务器(OS/390® 和 z/OS™、UNIX®、Windows®、Linux 和 iSeries™)通信。 DB2 版本 8 添加了一种新的 DB2 JDBC 通用驱动程序(类型 4),它使用分布式关系数据库体系结构(Distributed Relational Database Architecture™(DRDA®))协议来进行客户机/服务器通信。

  DB2 JDBC 应用程序驱动程序(类型 2)

  DB2 JDBC 应用程序(类型 2)驱动程序( 图 1)使 Java 应用程序能够通过 JDBC 调用 DB2。对 JDBC 应用程序驱动程序的调用被转换成 Java 本机方法。使用这种驱动程序的 Java 应用程序必须在 DB2 客户机上运行,JDBC 请求通过该客户机流到 DB2 服务器。需要 DB2 Connect™ 版本 8 许可证/安装来访问 DB2 for OS/390 数据库。


图 1. DB2 Java 应用程序体系结构
DB2 Java 应用程序体系结构

  在 COM.ibm.db2.jdbc.app包中包含了 DB2 JDBC 应用程序(类型 2)驱动程序。

JDBC 1 连接
  用于建立至 DB2 UDB 服务器的连接的实现类包括:

  • COM.ibm.db2.jdbc.app.DB2Driver

JDBC 2 连接 
   用于建立至 DB2 UDB 服务器的连接的实现类包括:

  • COM.ibm.db2.jdbc.DB2ConnectionPoolDataSource
  • COM.ibm.db2.jdbc.DB2DataSource
  • COM.ibm.db2.jdbc.DB2XADataSource

  要将应用程序配置成使用由 DB2 JDBC 应用程序(类型 2)驱动程序实现的 DataSource,需要下列信息:

databaseName数据库名称。

user用于连接数据库的用户标识。

password 用于连接数据库的密码。

用于 JDBC 和 SQLJ 的 DB2 瘦客户机驱动程序

  DB2 UDB 版本 8 为 JDBC 和 SQLJ 应用程序提供了类型 3 和类型 4“瘦”驱动程序。 图 2 描述了这两种驱动程序的体系结构。


图 2. DB2 JDBC/SQLj 瘦驱动程序体系结构
DB2 JDBC/SQLj 瘦驱动程序体系结构

DB2 JDBC 类型 3 驱动程序

  DB2 JDBC 类型 3 驱动程序,也称为 applet 或网络驱动程序,它由 JDBC 客户机和 JDBC 服务器组成。DB2 JDBC applet 驱动程序可以与 applet 一起由 Web 浏览器装入,或者可以在单独的 Java 应用程序中使用 applet 驱动程序。当 applet 请求至 DB2 数据库的连接时,applet 驱动程序打开至 DB2 JDBC applet 服务器的 TCP/IP 套接字,DB2 JDBC applet 服务器位于正在运行 Web 服务器的机器上。

  建立好连接之后,applet 驱动程序通过 TCP/IP 连接将每个随后来自 applet 的数据库访问请求发送到 JDBC 服务器。然后,JDBC 服务器进行相应的 DB2 调用以执行任务。完成后,JDBC 服务器通过该连接将结果发回 JDBC 客户机。JDBC 服务器进程是 db2jd。

  在 COM.ibm.db2.jdbc.net包中包含了 DB2 JDBC 类型 3 驱动程序。

JDBC 1 连接
  用于建立至 DB2 UDB 服务器的连接的实现类包括:

  • COM.ibm.db2.jdbc.net.DB2Driver

JDBC 2 连接
  用于建立至 DB2 UDB 服务器的连接的实现类包括:

  • COM.ibm.db2.DB2ConnectionPoolDataSource
  • COM.ibm.db2.DB2DataSource

  要将应用程序配置成使用由 DB2 JDBC 类型 3 驱动程序实现的数据源,需要下列信息:

databaseName数据库名称。

serverName JDBC applet 服务器进程所驻留的服务器名。

portNumber JDBC applet 服务器进程使用的端口号(缺省端口是 6789)。

user  用于连接到数据库的用户标识。

password 用于连接到数据库的密码。

  DB2 JDBC 类型 3 驱动程序没有提供 Java 事务 API(JTA)支持。JTA 提供了一个接口来完成分布式(两阶段提交)事务。

IBM DB2 JDBC 通用驱动程序(类型 4 — 版本 8 中的新增功能)

  在 DB2 版本 8 中,对 JDBC 驱动程序添加了许多新的特性和增强。在这些变化当中,最大的变化是体系结构的改进,它缩短了 JDBC 驱动程序和 DB2 服务器之间的代码路径。这种新的 IBM JDBC 通用驱动程序基于开放分布式协议(也就是分布式关系数据库体系结构(DRDA)),并与所有 DB2 服务器平台(UNIX、Windows、Linux 和 z/OS)相兼容,不过这些服务器平台必须具备相应的 DRDA 应用程序服务器(Application Server (AS))级别的支持,以及必须预先具备的存储过程。

  新的 IBM DB2 JDBC 通用驱动程序所独有的特性包括:

  • 可更新的 ResultSet 支持
  • 改进的 DB2 认证安全性
  • 改进的 Java SQL 错误信息
  • 程序性跟踪工具

  要使用 JDBC 通用驱动程序,在 Java CLASSPATH 环境变量中必须包含 db2jcc.jar 。

  DB2 JDBC 通用驱动程序类型 4 驱动程序包含在com.ibm.db2.jcc 包中。

JDBC 1 连接

  DB2 UDB 版本 8 服务器将使用在 DB2 DBM 配置文件(SVCENAME)中指定的 TCP/IP 连接来与新的 DB2 JDBC 通用驱动程序通信。

  用于建立至 DB2 UDB 服务器的连接的实现类包括:

  • com.ibm.db2.jcc.DB2Driver

  可以使用下面的 URL 创建连接对象:jdbc:db2://server:port/database

JDBC 2 连接

用于建立至 DB2 UDB 服务器的连接的实现类包括:

  • com.ibm.db2.jcc.DB2SimpleDataSource

  要将应用程序配置成使用由 DB2 JDBC 通用驱动程序(类型 4)实现的 DataSource,需要下列信息:

databaseName数据库名称。

user 用于连接数据库的用户标识。

password 用于连接数据库的密码。

driverType所使用的驱动程序类型(4)(必需)。

serverNameDRDA 服务器的 TCP/IP 地址或主机名。

portNumber DRDA 服务器用来侦听至数据源的连接请求的 TCP/IP 端口号。

请参考 附录 A,以获取其它 DB2 JDBC 通用驱动程序(类型 4)信息。

SQLJ 支持(版本 8 中的新体系结构)

  DB2 SQLJ 支持允许您构建和运行 SQLJ applet 和应用程序。这些 Java 程序包含被预编译并绑定到 DB2 UDB 数据库的嵌入式 SQL 语句。

  SQLJ 标准有三个组件:转换器、定制器和运行时环境。转换器根据源 SQLJ 程序内部的嵌入式 SQL 语句产生 Java 代码。SQL 语句的二进制表示是在一个单独的序列化概要文件( .ser 文件)中创建的。当使用 db2sqljcustomize 命令定制该概要文件时,会创建静态 SQL 包。SQLJ 应用程序需要 db2jcc.jar 文件,SQLJ 程序准备同样需要 sqlj.zip 文件。


图 3. SQLJ 应用程序开发
SQLJ 应用程序开发

SQLJ 提供了:

  • 静态包级别的安全性模型
  • 静态 SQL 接口(例如, SELECT xxx INTO :hv1, :hv2 )
  • 与 JDBC 相比,提高了开发生产率,尤其是当从现有的嵌入式 SQL 体系结构(C 和 COBOL 等)移植应用程序时。

  DB2 版本 8 提供了下列 SQLJ 实用程序,如 图 3中所示:

  sqlj IBM SQLJ 转换器。它转换 .sqlj 源文件并创建序列化概要文件和程序。

  db2sqljcustomize定制器和在线检查器。它为序列化概要文件创建 DB2 定制,可以选择在线检查能够动态预编译的 SQL 语句,也可以选择(缺省情况下)为该程序绑定 DB2 包。,并随意地(缺省情况下)为该程序绑定 DB2 包。

  db2sqljbind独立的绑定器。它将先前定制的 SQLJ 概要文件绑定到数据库。

  db2sqljprint打印 DB2 定制概要文件的内容。

  在 sqlj 程序在运行时对 DB2 执行静态 SQL 之前,必须定制从 sqlj 转换器输出的序列化概要文件。如果没有进行定制,则应用程序将动态执行包含在概要文件中的 SQL 语句。

Java 2 平台,企业版(J2EE)

  Java 2 平台,企业版(J2EE)定义用于开发多层企业应用程序的标准。J2EE 平台管理基础结构并支持 Web 服务,以开发安全的、健壮的和能够互操作的企业应用程序。J2EE 不仅利用了 Java 2 平台,标准版(J2SE)的许多特性(如“编写一次,就可以到处运行(Write Once, Run Anywhere)”的可移植性和用于数据库访问的 JDBC API ),而且还添加了对 Enterprise JavaBeans™(EJB)组件、Java Servlet、JavaServer Pages™(JSP)和 XML 技术的全面支持。有了简单性、可移植性、可伸缩性以及与旧系统的集成,J2EE 技术及其基于组件的模型就可以简化企业开发和部署。


图 4. J2EE 应用程序模型
J2EE 应用程序模型

  J2EE 应用程序模型将企业应用程序分成三个基础部分: 组件、 容器和 连接器。组件是应用程序开发人员的主要关注点,而系统供应商实现容器和连接器以隐藏复杂性和提高可移植性。容器在客户机和组件之间进行协调,并透明地为两者提供服务,包括事务支持和资源合用。容器协调允许在部署时指定许多个组件行为,而不是在程序代码中指定。连接器位于 J2EE 平台之下,定义可移植的服务 API 以插入现有企业供应商所提供的东西。连接器通过启用各种特定服务的实现来提高灵活性。

DB2 UDB 版本 8 中的 Java 技术

  就象用其它语言一样,可以用 Java 创建存储过程和 SQL 语言扩展(又称为用户定义的函数)。必须在数据库中使用 CREATE PROCEDURE 语句注册存储过程。可以使用 CREATE FUNCTION 语句注册基于 Java 的 UDF。然后,可以使用任何受支持的客户机 API(如 JDBC、ODBC 和 SQLJ)从应用程序调用存储过程。可以使用任何 SQL 语句调用基于 Java 的 UDF。可以在其自己的地址空间(FENCED)或与 DB2 UDB 相同的地址空间(NOT FENCED)中执行该存储过程或 UDF。

  现在,在 DB2 UDB 版本 8 中,可以将 Java 存储过程和 UDF 注册为 THREADSAFE 或 NOT THREADSAFE。Java 过程和函数的 THREADSAFE 选项将导致在 DB2 UDB 服务器上使用单个 JVM(Java 虚拟机)。版本 8 中 Java 过程和函数的缺省选项是 THREADSAFE,所以对于并发的 Java 存储过程,需要更少的内存。因为不再需要装入多个 JVM,所以还可以改进性能。

------分隔线----------------------------