包 javax.sql.rowset.serial


javax.sql.rowset.serial
提供实用程序类以允许在 Java 编程语言中的 SQL 类型和数据类型之间进行可序列化映射。

标准 JDBC RowSet 实现可以使用这些实用程序类来帮助序列化断开连接的 RowSet 对象。这在通过线路将断开连接的 RowSet 对象传输到不同的 VM 或在应用程序中跨层传输时非常有用。

1.0 串行数组

SQL ARRAY 值的 Java 编程语言中的可序列化映射。

SerialArray 类提供用于从 Array 对象创建 SerialArray 实例的构造函数、用于获取基类型和基类型的 SQL 名称的方法,以及用于复制全部或部分 SerialArray 对象的方法。

2.0 SerialBlob

SQL BLOB 值的 Java 编程语言中的可序列化映射。

SerialBlob 类提供了一个用于从 Blob 对象创建实例的构造函数。请注意,Blob 对象应该在从它构造 SerialBlob 对象之前将 SQL BLOB 值的数据带到客户端。 SQL BLOB 值的数据可以在客户端具体化为字节数组(使用方法 Blob.getBytes )或未解释的字节流(使用方法 Blob.getBinaryStream )。

SerialBlob 方法可以将 SerialBlob 对象复制为字节数组或流。它们还可以在 SerialBlob 对象中定位给定的字节模式或 Blob 对象。

3.0 SerialClob

SQL CLOB 值的 Java 编程语言中的可序列化映射。

SerialClob 类提供了一个构造函数,用于从 Clob 对象创建实例。请注意,Clob 对象应该在从它构造 SerialClob 对象之前将 SQL CLOB 值的数据带到客户端。 SQL CLOB 值的数据可以在客户端具体化为 Unicode 字符流。

SerialClob 方法可以从 SerialClob 对象获取子字符串或定位字符模式的开头。
SQL DATALINK 值的 Java 编程语言中的可序列化映射。 DATALINK 值引用原始数据源管理的基础数据源之外的文件。

RowSet 实现可以使用方法 RowSet.getURL() 检索 java.net.URL 对象,该对象可用于操作外部数据。
  java.net.URL url = rowset.getURL(1);
 

6.0 SerialJava对象

SQL JAVA_OBJECT 值的 Java 编程语言中的可序列化映射。假设 Java 对象实例实现了 Serializable 接口,这只是简单地包装了序列化过程。

但是,如果在 Java 对象不能立即序列化的情况下序列化是不可能的,则此类将尝试序列化所有非静态成员以允许对象实例状态被序列化。无法序列化静态或瞬态字段,尝试这样做将导致抛出 SerialException

7.0 序列号

SQL REF 类型和 Java 编程语言之间的可序列化映射。

SerialRef 类提供用于从 Ref 类型创建 SerialRef 实例的构造函数,并提供用于获取和设置 Ref 对象类型的方法。

8.0 串行结构

SQL 结构类型的 Java 编程语言中的可序列化映射。每个尚未序列化的属性都映射到可序列化形式,如果属性本身是结构化类型,则其每个尚未序列化的属性都映射到可序列化形式。

此外,如果将 Map 对象传递给构造函数之一或方法 getAttributes ,则根据 Map 对象中指定的map自定义映射结构化类型。
SerialStruct 类提供用于从 Struct 对象创建实例的构造函数、用于检索数据库中 SQL 结构类型的 SQL 类型名称的方法以及用于检索其属性值的方法。

9.0 SQLInputImpl

用于自定义映射用户定义类型 (UDT) 的输入流。 SQLInputImpl 对象是一个输入流,其中包含作为 UDT 属性的值流。当在具有自定义映射的 SQL 结构或不同类型上调用方法 getObject 时,驱动程序在后台使用此类;程序员从不直接调用 SQLInputImpl 方法。

SQLInputImpl 类提供了一组类似于 ResultSet getter 方法的读取器方法。这些方法可以读取 SQLInputImpl 对象中的值。方法wasNull用于判断最后读取的值是否为SQL NULL。

当调用采用 Map 对象的构造函数或 getter 方法时,JDBC 驱动程序调用方法 SQLData.getSQLType 来确定自定义映射的 UDT 的 SQL 类型。驱动程序创建 SQLInputImpl 的实例,并使用 UDT 的属性填充它。然后,驱动程序将输入流传递给方法 SQLData.readSQL,后者又调用 SQLInputImpl 方法从输入流中读取属性。

10.0 SQLOutputImpl

用于将自定义映射用户定义类型 (UDT) 的属性写回数据库的输出流。驱动程序在内部使用这个接口,应用程序程序员永远不会直接调用它的方法。

当应用程序调用方法 PreparedStatement.setObject 时,驱动程序会检查要写入的值是否是具有自定义映射的 UDT。如果是,则类型map中将有一个条目,其中包含为该 UDT 实现 SQLData 的类的 Class 对象。如果要写入的值是 SQLData 的实例,则驱动程序将创建 SQLOutputImpl 的实例并将其传递给方法 SQLData.writeSQLwriteSQL 方法依次调用适当的 SQLOutputImpl 编写器方法,将数据从 SQLData 对象写入 SQLOutputImpl 输出流,作为 SQL 用户定义类型的表示。

自定义映射

JDBC API 提供了将 SQL 结构化类型或 DISTINCT 类型映射到 Java 编程语言的机制。通常,结构化类型映射到类,其属性映射到类中的字段。 (可以认为 DISTINCT 类型具有一个属性。)但是,还有许多其他可能性,并且可能有任意数量的不同映射。

程序员通过实现接口 SQLData 来定义映射。例如,如果名为 AUTHORS 的 SQL 结构类型具有 NAME、TITLE 和 PUBLISHER 属性,则它可以映射到名为 Authors 的 Java 类。 Authors 类可以具有名称、标题和出版商字段,AUTHORS 的属性映射到这些字段。在这种情况下,SQLData 的实现可能如下所示:

  public class Authors implements SQLData {
    public String name;
    public String title;
    public String publisher;

    private String sql_type;
    public String getSQLTypeName() {
      return sql_type;
    }

    public void readSQL(SQLInput stream, String type)
                  throws SQLException {
      sql_type = type;
      name = stream.readString();
      title = stream.readString();
      publisher = stream.readString();
    }

    public void writeSQL(SQLOutput stream) throws SQLException {
      stream.writeString(name);
      stream.writeString(title);
      stream.writeString(publisher);
    }
  }
 
java.util.Map 对象用于关联 SQL 结构类型及其到类 Authors 的映射。以下代码片段显示了如何创建 Map 对象并为其提供关联 AUTHORSAuthors 的条目。
   java.util.Map map = new java.util.HashMap();
   map.put("SCHEMA_NAME.AUTHORS", Class.forName("Authors");
 
Map 对象map现在包含一个条目,该条目具有 SQL 结构类型的完全限定名称和类 AuthorsClass 对象。它可以传递给一个方法来告诉驱动程序如何将 AUTHORS 映射到 Authors

对于断开连接的 RowSet 对象,只有在将 Map 对象传递给将执行自定义映射的方法或构造函数时,才能完成自定义映射。对于已连接的 RowSet 对象,情况有所不同,因为它们保持与数据源的连接。执行自定义映射并由断开连接的 RowSet 对象调用的方法可以使用与正在使用的 Connection 对象关联的 Map 对象。所以,换句话说,如果没有指定map,默认情况下可以使用连接的类型映射。

  • 描述
    Array 对象的序列化版本,它是 SQL ARRAY 值在 Java 编程语言中的映射。
    SQL BLOB 值的 Java 编程语言中的序列化映射。
    SQL CLOB 值的 Java 编程语言中的序列化映射。
    SQL DATALINK 值的 Java 编程语言中的序列化映射。
    除了 DATALINK and JAVAOBJECT 等 SQL 类型之外,还指示 BLOB, CLOB, STRUCT or ARRAY 等 SQL 类型的序列化或反序列化错误
    SQL JAVA_OBJECT 值的 Java 编程语言中的可序列化映射。
    Ref 对象的序列化映射,它是 SQL REF 值在 Java 编程语言中的映射。
    SQL 结构类型的 Java 编程语言中的序列化映射。
    用于自定义映射用户定义类型 (UDT) 的输入流。
    用于将自定义映射的用户定义类型 (UDT) 的属性写回数据库的输出流。