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 应用程序体系结构
在 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 类型 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 提供了:
- 静态包级别的安全性模型
- 静态 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 平台之下,定义可移植的服务 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,所以还可以改进性能。
闽公网安备 35060202000074号