配置支持连接池的 DataSource 的时候,涉及到配置 ConnectionPoolDataSource 对象,
这个对象是三层体系结构中的中间层来管理连接池的。同样的,在配置支持分布式事务的
时候,需要 配置 XADataSource,XADataSource 是中 间层用来 管理分布式事 物的对象 。
ConnectionPoolDataSource 和 XADataSource 是由驱动提供商提供的,对应用程序的设计者
来说是透明的。和基本的 DataSource 一样,系统管理员来配置 ConnectionPoolDataSource
和 XADataSource 对象。
四、结果集(RowSet 接口):
结果集对象是一行行数据的容器。根据其目的,可以通过多种方法实现。RowSet 及其
相关的接口与 JDBC2.0 的标准扩展 API 有点不同,他们并不是驱动的一部分,RowSet 是在
驱动的上层实现的,可以由其它的任何人来实现他们。
任何类型的 rowset 都实现了 RowSet 接口,RowSet 接口扩展了 ResultSet 接口。这样
RowSet 对象就有了 ResultSet 对象所有的功能。能够通过 getXXX 方法得到数据库中的某列
值,通过 updateXXX 方法可以修改某列值,可以移动光标,是当前行变为另一行。
当然,我们更感兴趣的是 RowSet 接口提供的新的功能。作为一个 JavaBean 组件,
RowSet 对象可以增加或者删除一个 listener(监听者),可以 get 或者 set 其属性值,这些
属性中,有一个是字符串,表示一个对数据库 Query 请求,RowSet 接口定义了设定参数的
方法,也提供了执行这个请求的方法。这意味着 RowSet 对象能够执行查询请求,可以根
据它产生的结果集进行计算。同样,RowSet 也可以根据任何表格数据源进行计算,所以,
它不局限于关系数据库。
从数据源得到数据之后,RowSet 对象可以和数据源断开连接,rowset 也可以被序列化。
这样,RowSet 就可以通过网络传递给瘦客户端。
RowSet 可以被重新连接到数据源,这样,做的修改就可以存回到数据源中去。如果产
生了一个 listener,当 RowSet 的当前行移动,或者数据被修改的时候,监听者就会收到通
知。例如,图形用户界面组件可以注册成为监听者,当 RowSet 更改的时候,图形用户界
面接到通知,就可以修改界面,来符合它所表示的 RowSet。
根据不同的需要,RowSet 接口可以通过多种方法来实现。Java software 已经写了一个
CachedRowSet 实现,从 http://developer.java.sun.com/developer/earlyAccess/crs/index.html 中
可以得到这个实现。
与 CachedRowSet 类不样的是,JDBCRowSet 类总是保持一个和数据源的连接。这样,
在 ResultSet 外围 简单 到加了 一层 ,是基 于 JDBC 技术的驱 动看 起来 象是一 个简 单的
JavaBean 组件一样。
总结:JDBC2.0 标准扩展 API 通过见 DataSource 注册到 JNDI 名字服务上,将 JDBC 技
术扩展为一个全新的概念。使应用程序的代码更加精巧,易于控制。新的 API 支持了连接
池,支持分布式的事务。最后,还使 java 应用程序可以在网络上传播结果集,是不可以滚
动的 ResultSet 变成了可以滚动的 RowSet。
11.2.4. DataSource 接口
为了从数据库中取得数据,我们首先需要获取一个数据库连接。 Spring 通过 DataSource 对
象来完成这个工作。 DataSource 是 JDBC 规范的一部分, 它被视为一个通用的数据库连接