其它章节的翻译参见:

http://www.pgsqldb.org/twiki/bin/view/PgSQL/JDBC4%E8%AF%B4%E6%98%8E%E4%B9%A6

=================================================================

序言

这个文档巩固了下面几个规范的内容:

JDBC: JavaSQL类库”

JDBC 2.1 类库”

JDBC 2.0 标准扩展类库”

JDBC 3.0 规范”

文档介绍了JDBC 4.0 类库的新特征和一些增强的特征。文档根据不同特征划分章节,这样可以更方便了解JDBC 4.03.0的不同之处。

读者如果想了解JDBC类库的详细信息,可以参考JDBC的类库文档(Javadoc),该文档可以由以下链接获得:

http://java.sun.com/products/jdbc

==========================================================================

介绍

1.1 JDBC类库

JDBC类库提供了通过Java语言访问关系数据库的能力。Java程序通过JDBC可以执行SQL语句,对获取的数据进行处理,并将变化了的数据存回数据库。在分布式异构环境中,我们还可以通过JDBC操纵多个数据源。

JDBC类库基于X/Open SQL通用语言接口(CLI)ODBC也基于此。JDBC提供了一个使用方便的映射方案:从Java语言到X/Open 通用语言接口和SQL标准的抽象实体及概念的映射。

1997年的产生至今,JDBC类库已被广泛的接受和实现。类库的灵活性使得它可以有很多个具体实现。

1.2 平台

JDBC类库是Java平台的一部分。4.0版分为两个包:java.sql javax.sql。这两个包都包含在JSE(Java桌面版)JEE(Java企业版)中。

1.3 适合读者

该文档主要面向下列产品的开发者:

1. JDBC驱动程序

2. 基于数据库驱动提供三层架构服务的应用服务器

3. 使用JDBC类库来提供服务的工具

该文档想达到以下目的:

1.对使用JDBC类库的开发者的一个介绍

2.作为开发基于JDBC的类库的起始点

===============================================================

目标

2.1 历史

2.2 JDBC 4.0 之目标

---1.JEEJSE平台相处融洽

---2.SQL:2003一致

---3.巩固前述四个规范

---4.提供中立于厂商的通用功能

---5.主要只针对SQL类型的数据源

---6.提供高层类库和工具的基础设施

---7.保持简单

---8.加强可靠性、可用性和可伸缩性

---9.保持向后兼容性

---10.JDBC行集(RowSet)紧密联系

---11.与连接器架构(Connectors)兼容

---12.清晰描述JDBC需求

==================================================================

新特性概览

3.1 变更概览

JDBC 4.0 类库在以下领域注入了变化和新的元素:

1.自动加载java.sql.Driver

DriverManager.getConnection方法被修改以利用JSE的服务提供者机制来自动加载JDBC驱动。这样就不需要调用Class.forName方法了。

2.类库使用更容易

添加了标准JDBC注释。支持数据集(DataSet),使Java应用调用SQL数据源更加方便。

3.ROWID数据类型

添加了java.sql.RowID数据类型,使得JDBC程序可以访问SQL ROWID

4.支持本地字符集转换(National Character Set Conversion)

添加了一些JDBC类型:NCHAR, NVARCHAR, LONGVARCHAR, NCLOB。对应的方法setNString, setNCharacterStream, setNClob也被添加到PreparedStatement接口中。

5.增强了对BLOBCLOB的支持

Connection接口添加了生产BLOBCLOBNCLOB对象的方法。PreparedStatement接口添加了通过InputStream插入BLOB的方法和使用Reader插入CLOBNCLOB的方法。Blob, ClobNClob现在可以通过free方法释放资源。

6.SQL/XMLXML支持

SQL2003引入了用SQL表达XML数据的概念。一些类库被添加进来以支持应用对这些数据的访问。

7.包装器(Wrapper)模式

添加了解包JDBC实现的能力,使开发者可以利用在厂商实现中提供的非标准JDBC方法。

8.加强的SQLException

添加对JSE链式异常的支持。SQLException现在支持Iterable接口,所以我们可以在for-each循环里读取SQLExceptions。新添加了两类SQL异常:SQLTransientExceptionSQLNonTransientException。每个类都提供映射到普通SQLState类型值(译者注:SQLState)的子类。

9.连接管理

ConnectionStatement接口得到了增强,以利于对连接状态的跟踪,并增加在池环境中管理Statement对象的灵活性。

10.JDBC类库的变化

下面的JDBC接口被修改:

---10.1 Connection

添加了下列方法:createBlob, createClob, createNClob, createQueryObject, isValid, createXML, getClientInfo, setClientInfo

---10.2 CallableStatement

添加了下列方法:getRowId, setRowId, getNClob, setNString, setNCharacterStream, setNClob, getSQLXML, setSQLXML。重载了setClobsetBlob方法。

---10.3 DatabaseMetaData

添加了下列方法:getRowIdLifetime, autoCommitFailureClosesAllResultSets, providesQueryObjectGenerator, getClientInfoProperties, supportsStoredFunctionsUsingCallSyntax. 重载了getSchemas方法。

---10.4 PreparedStatement

添加了下列方法:setRowId, setNString, setNCharacterStream, setSQLXML, isPoolable, setPoolable, setNClob。重载了setClobsetBlob方法。

---10.5 ResultSet

添加了下列方法:getHoldability, getRowId, updateRowID, getNClob, isClosed, updateNString, getSQLXML, updateSQLXML, updateNClob

---10.6 Statement

添加了isClosedgetResultSetHoldability方法。

---10.7 DataSource

添加了createQueryObject方法。

---10.8 PooledConnection

添加了addStatementEventListenerremoveStatementEventListener方法。

====================================================================

概览

JDBC类库使得Java程序可以访问多个数据源,但在大多数情况下,这个数据源是关系数据库,并且通过SQL访问。然而,实现JDBC技术的驱动也可以基于其它的数据源,包括遗留文件系统和面向对象的系统。

JDBC类库的主要目的就是提供应用程序访问多种数据源的标准接口。

这一章介绍JDBC类库的一些关键概念,并描述JDBC应用的两个通用环境及其中的功能实现。

4.1 创建连接

JDBC类库中的Connection接口代表了底层数据源的一个连接。

在典型场景中,JDBC应用程序使用两种机制连接到数据源:

1.DriverManager --- 这个类在JDBC 1.0中引入,它使用硬编码的URL来加载驱动。

2.DataSource --- 这个接口在JDBC 2.0可选包中引入。它优于DriverManager方式,因为它隐藏了数据源的详细信息。我们通过设置DataSource的属性来标明它代表的数据源。当getConnection方法被调用时,DataSource对象会返回一个对应的连接。我们可以通过改变DataSource的属性来使它指向另一个数据源,而不是改变程序代码。而且,如果DataSource的实现改变了,使用它的应用程序代码不需要改变。

JDBC类库也定义了两个DataSource的扩展,用来支持企业级应用,如下:

1.ConnectionPoolDataSource --- 支持物理连接的缓存和重用,这样可以提高应用的性能和可伸缩性。

2.XADataSource --- 提供可以使用在分布式事务中的连接。



版权所有 罗明
posted on 2005-09-28 01:18 罗明 阅读(134) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: