2024年3月31日发(作者:)
Java RowSet 使用完全剖析
RowSet 简介
自 JDK 1.4 引入,从 JDK 5.0 开始提供了参考实现。它主要包括 CachedRowSet,WebRowSet,
FilteredRowSet,JoinRowSet 和 JdbcRowSet。 除了 JdbcRowSet 依然保持着与数据源的连接之外,其余四个都是 Disconnected
RowSet。
相比较
Set
而言,RowSet 的离线操作能够有效的利用计算机越来越充足的内存,减轻数据库服务器的负担,
由于数据操作都是在内存中进行然后批量提交到数据源,灵活性和性能都有了很大的提高。RowSet 默认是一个可滚动,可更新,可序列
化的结果集,而且它作为 JavaBeans,可以方便地在网络间传输,用于两端的数据同步。
回页首
类继承结构
RowSet 继承自 ResultSet,其他五个 RowSet 接口均继承自 RowSet。下图是它们的继承关系。
图 1. 继承结构图
表 1. RowSet 接口说明
CachedRowSet 最常用的一种 RowSet。其他三种 RowSet(WebRowSet,FilteredRowSet,JoinRowSet)都是直接或间接继
承于它并进行了扩展。它提供了对数据库的离线操作,可以将数据读取到内存中进行增删改查,再同步到数据源。
可串行化,可作为 JavaBeans 在网络间传输。支持事件监听,分页等特性。
WebRowSet 继承自 CachedRowSet,并可以将 WebRowSet 写到 XML 文件中,也可以用符合规范的 XML 文件来填充
WebRowSet。
FilteredRowSet
通过设置 Predicate(在
包中),提供数据过滤的功能。可以根据不同的条件对
RowSet 中的数据进行筛选和过滤。
JoinRowSet 提供类似 SQL JOIN 的功能,将不同的 RowSet 中的数据组合起来。目前在 Java 6 中只支持内联(Inner
Join)。
JdbcRowSet 对 ResultSet 的一个封装,使其能够作为 JavaBeans 被使用,是唯一一个保持数据库连接的 RowSet。
回页首
实验环境
本文示例的实验环境如下:
Java 环境:Sun JDK 6.0
数据库:derby-10.3.1.4
数据库名:
TESTDB
数据库用户名及密码:均使用 derby 默认用户名和密码。
表及测试数据:创建两个表:
CUSTOMERS
和
ORDERS
,并分别插入测试数据。
示例代码以附件形式提供 下载。
表 2. 表 CUSTOMERS
ID
1
2
NAME
Tom
Jim
REMARK
Tom is VIP
null
表 3. 表 ORDERS
ID
1
2
3
USER_ID
1
1
2
PRODUCT
Book
Computer
Phone
回页首
使用 CachedRowSet
填充 CachedRowSet 的两种方式
CachedRowSet 提供了两个用来获取数据的方法,一个是
execute()
,另一个是
populate(ResultSet)
。
使用
execute()
填充 CachedRowSet 时,需要设置数据库连接参数和查询命令
command
,如下示例代码:
清单 1. 使用 execute()
(_URL);
mand(_SELECT_CUSTOMERS);
// derby 默认用户名和密码都是 "APP",也可以不设置。
rname("APP"); //$NON-NLS-1$
sword("APP"); //$NON-NLS-1$
e();
发布评论