jdbc 行集在哪里使用?

Posted

技术标签:

【中文标题】jdbc 行集在哪里使用?【英文标题】:Where jdbc Rowsets are used? 【发布时间】:2012-11-23 10:43:10 【问题描述】:

有一些 JDBC Rowsets,例如 CachedRowSetWebRowSetFilteredRowSetJoinRowSet >。有没有预兆知道它们在哪里使用? 好的,在我不想打开和连接的地方可能是 CachedRowSet 很好,当我需要插入一些 XML 数据时可能是 WebRowSet 很好(“可能是”,但我不确定)。但是其他人呢?

显然,在 SQL 查询中编写连接而不是创建 2 个 JoinRowSet,从它们中获取所有数据并在 java 中连接字段,性能更好。 FilteredRowSet 也是如此 - 将 where 子句添加到 SQL 查询而不是 grub 大量数据并通过 java 过滤它更有效。

但是为什么有人“发明”了 CachedRowSet、WebRowSet、FilteredRowSet 和 JoinRowSet?有人对它们的使用有一些好的经验吗?

【问题讨论】:

【参考方案1】:

CachedRowSet 接口定义了可用于所有断开连接的 RowSet 对象的基本功能。其他三个是 CachedRowSet 接口的扩展,它们提供了更专业的功能。以下信息显示了它们之间的关系:

CachedRowSet 对象具有 JdbcRowSet 对象的所有功能,此外它还可以执行以下操作:

获取到数据源的连接并执行查询。 从生成的 ResultSet 对象中读取数据并用填充自身 该数据。 操作数据并在数据存在时对其进行更改 已断开连接。 重新连接到数据源以将更改写回 它。 检查与数据源的冲突并解决这些冲突 冲突

WebRowSet 对象具有 CachedRowSet 对象的所有功能,此外它还可以执行以下操作:

将自身写为 XML 文档 读取描述 WebRowSet 对象的 XML 文档

JoinRowSet 对象具有 WebRowSet 对象的所有功能(因此也具有 CachedRowSet 对象的功能),此外它还可以执行以下操作:

无需连接到数据源即可形成等效的 SQL JOIN

FilteredRowSet 对象同样具有 WebRowSet 对象(因此也是 CachedRowSet 对象)的所有功能,此外它还可以执行以下操作:

应用过滤条件,以便只有选定的数据可见。这相当于对 RowSet 对象执行查询,而无需使用查询语言或连接到数据源。

【讨论】:

【参考方案2】:

RowSet 接口,行从 JDBC 数据源检索,但行集可以自定义,以便其数据也可以来自电子表格、平面文件或任何其他具有表格格式的数据源。

断开连接(不连接到数据源,除非从数据源读取数据或向其写入数据)

CachedRowSet

JoinRowSet

FilteredRowSet

WebRowSet

缓存行集 - 断开连接并能够在没有驱动程序的情况下运行,旨在与瘦客户端一起工作,以便在分布式应用程序中传递数据或使结果集可滚动和可更新

WebRowSet - 以 XML 格式读取和写入行集的能力。

FilteredRowSet- 用于从行集中过滤的数据子集。

JoinRowSet - 用于组合来自两个不同 RowSet 对象的数据。当相关数据存储在不同的数据源中时,这尤其有价值

Documentation

【讨论】:

【参考方案3】:

不确定,但这就是我对 FilteredRowSet 的看法。可以通过一次连接从数据库中获取数据。例如城市、州和国家的数据。稍后可以进一步将数据子集返回到Java 中的数据库。例如与城市、州或国家或它们的组合相关的所有记录。

【讨论】:

以上是关于jdbc 行集在哪里使用?的主要内容,如果未能解决你的问题,请参考以下文章

行集函数:OpenRowSet 和 OpenQuery

构建大型 SQL 行集并在 .NET 中使用

PHP PDO 多选查询始终删除最后一个行集

如何使用单个 API 调用扫描 HappyBase 中的行集?

如何选择每个项目具有最大时间戳的行集?

SQL 表变量 - 添加检查匹配行集是不是存在的约束