Module java.sql.rowset

Package javax.sql.rowset


package javax.sql.rowset
JDBC的标准接口和基类RowSet实现。此包含有标准RowSet实现要么实现要么扩展的接口和类。

目录

1.0 包规范

此包指定了五个标准的JDBC RowSet接口。所有五个接口都扩展了JDBC 3.0规范中描述的RowSet接口。预计随着技术的成熟,会出现更多专门的JDBC RowSet类型的定义。未来的定义应该被指定为使用类似于本规范中使用的继承的子接口。

注意:此包中提供的接口定义构成了所有符合JDBC RowSet实现的基础。打算提供自己符合的RowSet实现的供应商和更高级的开发人员应特别注意规范接口中详细说明的断言。

2.0 标准RowSet定义

  • JdbcRowSet - 包装了一个ResultSet对象,使得可以将结果集作为JavaBeans组件使用。因此,JdbcRowSet对象可以是任何工具作为组件化架构的一部分组装应用程序的Bean。一个JdbcRowSet对象是一个连接的RowSet对象,也就是说,它必须使用JDBC技术启用的驱动程序(“JDBC驱动程序”)不断地维护与数据源的连接。此外,JdbcRowSet对象提供了一个完全可更新和可滚动的表格数据结构,如JDBC 3.0规范中定义。
  • CachedRowSet - 一个CachedRowSet对象是一个可滚动、可更新、可序列化的JavaBeans组件,通常与其数据源分离。一个CachedRowSet对象通常包含来自结果集的行,但也可以包含来自任何具有表格格式的文件的行,例如电子表格。CachedRowSet实现必须使用SyncFactory来管理和获取可插拔的SyncProvider对象,以提供断开的RowSet对象与原始数据源之间的同步。通常,SyncProvider实现依赖于JDBC驱动程序来获取与特定数据源的连接。有关此机制的更多详细信息,请参阅javax.sql.rowset.spi包规范。
  • WebRowSet - 一个WebRowSet对象是CachedRowSet的扩展,可以以格式良好的XML格式读取和写入RowSet对象。此类调用一个XmlReader对象(RowSetReader接口的扩展)以XML格式读取行集。它调用一个XmlWriter对象(RowSetWriter接口的扩展)以XML格式写入行集。WebRowSet对象所需的读者和写者由SyncFactorySyncProvider实现的形式提供。为了确保格式良好的XML使用,定义并发布了一个标准的通用XML模式,网址为 http://xmlns.jcp.org/xml/ns//jdbc/webrowset.xsd
  • FilteredRowSet - 一个FilteredRowSet对象以编程和可扩展的方式提供过滤功能。有许多情况下,RowSet对象需要在不牺牲断开环境的情况下提供其内容的过滤,从而节省创建到数据源的连接的费用。解决此需求的解决方案从提供重量级全面的SQL查询功能、到可移植组件、到更轻量级的方法等各种。一个FilteredRowSet对象使用Predicate接口的实现,该接口可能在运行时定义过滤器。反过来,FilteredRowSet对象负责强制执行双向读取和写入操作的设置过滤器。也就是说,所有过滤器都可以被视为双向的。没有定义标准过滤器;但是,已经指定了足够的机制来允许实现任何所需的过滤器。
  • JoinRowSet - JoinRowSet接口描述了建立两个或多个标准RowSet实现之间关系的机制。可以向JoinRowSet对象添加任意数量的RowSet对象,只要这些RowSet对象可以以SQL JOIN的方式相关联。根据定义,SQL JOIN语句用于基于公共属性合并两个(或更多)关系数据库表中包含的数据。通过建立然后强制执行列匹配,JoinRowSet对象在不需要触及原始数据源的情况下建立RowSet实例之间的关系。

3.0 实现者指南

符合JDBC RowSet实现的实现者必须遵循本规范中描述的断言。根据Java社区流程的条款,可以获得测试兼容性工具包(TCK)的许可,以确保与规范的兼容性。以下段落概述了标准JDBC RowSet定义的实现者的一些起点。实现者还应参考实现者指南中的内容javax.sql.rowset.spi包中关于SyncProvider实现的指导方针。
  • 3.1 构造函数

    所有RowSet实现必须提供一个无参数的构造函数。

  • 3.2 BaseRowSet类的作用

    符合JDBC的RowSet实现必须实现此包中指定的一个或多个标准接口,并可以扩展BaseRowSet抽象类。例如,CachedRowSet实现必须实现CachedRowSet接口并扩展BaseRowSet抽象类。无论RowSet对象存在于连接还是断开的环境中,BaseRowSet类提供了标准的架构,所有RowSet实现都应该基于此构建。BaseRowSet抽象类提供了任何RowSet实现所需的基本功能,包括与JavaBeans组件要求完全符合的属性操作和事件通知。例如,参考实现中提供的所有实现(包含在com.sun.rowset包中)都使用BaseRowSet类作为其实现的基础。

    以下表格说明了BaseRowSet抽象类提供的功能。

    BaseRowSet中的功能
    功能 详情
    属性 提供标准的JavaBeans属性操作机制,允许应用程序获取和设置RowSet命令和属性值。有关标准RowSet属性的更多详细信息,请参考javax.sql.RowSet接口的文档(在JDBC 3.0规范中可用)。
    事件通知 提供标准的JavaBeans事件通知给已注册的事件监听器。有关如何注册和处理符合实现生成的标准RowSet事件的更多详细信息,请参考javax.sql.RowSetEvent接口的文档(在JDBC 3.0规范中可用)。
    为RowSet对象的命令设置器 提供一套完整的设置器方法,用于设置RowSet命令参数。
    提供用于存储流实例的字段,同时提供一组用于流类型指定的常量。
  • 3.3 连接的RowSet要求

    JdbcRowSet描述了一个RowSet对象,它必须始终连接到原始数据源。实现JdbcRowSet的对象应确保此连接仅由JDBC驱动程序提供。此外,实现JdbcRowSet接口并因此在连接环境中运行的RowSet对象不使用SyncFactory来获取RowSetReader对象或RowSetWriter对象。它们可以安全地依赖于JDBC驱动程序通过底层可更新和可滚动的ResultSet实现来满足其需求。

  • 3.4 断开的RowSet要求

    一个断开的RowSet对象,例如CachedRowSet对象,应该将连接管理委托给SyncFactory提供的SyncProvider对象。为了确保完全断开的语义,所有断开的RowSet对象必须确保用于填充RowSet对象的原始连接已关闭,以允许垃圾回收器回收和释放资源。SyncProvider对象确保关键的JDBC属性得以维护,以便在需要同步时重新建立与数据源的连接。因此,断开的RowSet对象应确保Connection对象上没有多余的引用。

  • 3.5 RowSetMetaDataImpl的作用

    RowsetMetaDataImpl类是一个实用类,提供了RowSet对象的元数据的实现,为连接和断开的RowSet对象提供了标准的setter方法实现。所有实现都可以使用此标准实现,但不是必须这样做。

  • 3.6 RowSetWarning类

    RowSetWarning类提供了可以设置在RowSet实现上的警告。类似于SQLWarning对象,RowSetWarning对象会静默链接到引发警告的方法的对象上。所有RowSet实现应该确保如果生成了警告,则进行此链接,并确保可以通过JdbcRowSet接口或CachedRowSet接口中定义的getRowSetWarnings方法获取警告。在使用getRowSetWarnings方法之一检索警告后,可以调用RowSetWarning方法getNextWarning来检索可能链接在其上的任何警告。如果返回了一个警告,则可以在其上调用getNextWarning,依此类推,直到没有更多的警告。

  • 3.7 Joinable接口

    Joinable接口为连接和断开的RowSet对象提供了在SQL JOIN操作中添加到JoinRowSet对象的能力。实现了Joinable接口的RowSet对象可以设置匹配列、检索匹配列或取消匹配列。然后,JoinRowSet对象可以使用RowSet对象的匹配列作为添加RowSet对象的基础。

  • 3.8 RowSetFactory接口

    必须提供RowSetFactory实现。

4.0 相关规范

5.0 相关文档

  • Class
    Description
    一个抽象类,提供了一个具有基本功能的RowSet对象。
    所有标准CachedRowSet实现必须实现的接口。
    所有标准FilteredRowSet实现必须实现的标准接口。
    所有标准JdbcRowSet实现必须实现的标准接口。
    1.0 背景
    JoinRowSet接口提供了一种将来自不同RowSet对象的相关数据组合成一个JoinRowSet对象的机制,该对象表示SQL JOIN
    提供了所有FilteredRowSet对象描述其过滤器的框架的标准接口。
    定义了用于获取不同类型RowSet实现的工厂的实现的接口。
    提供了设置和获取关于RowSet对象列的元数据信息的方法的实现。
    一个工厂API,使应用程序能够获取可用于创建不同类型RowSet实现的RowSetFactory实现。
    提供了关于设置在RowSet对象上的数据库警告的信息的SQLException的扩展。
    所有WebRowSet实现必须实现的标准接口。