Spec-Zone.ru › OpenJDK 25

Пакет javax.sql.rowset.serial

package javax.sql.rowset.serial
Предоставляет вспомогательные классы, позволяющие создавать сериализуемые сопоставления между типами SQL и типами данных языка программирования Java.

Стандартные реализации JDBC RowSet могут использовать эти вспомогательные классы для сериализации отключённых объектов RowSet. Это полезно при передаче отключённого объекта RowSet по сети на другую виртуальную машину или между уровнями приложения.

1.0 SerialArray

Сериализуемое сопоставление значения SQL ARRAY в языке программирования Java.

Класс SerialArray предоставляет конструктор для создания экземпляра SerialArray из объекта Array, методы для получения базового типа и имени SQL для базового типа, а также методы для копирования всего объекта SerialArray или его части.

2.0 SerialBlob

Сериализуемое сопоставление значения SQL BLOB в языке программирования Java.

Класс SerialBlob предоставляет конструктор для создания экземпляра из объекта Blob. Обратите внимание, что объект Blob должен передать данные значения SQL BLOB клиенту до создания на его основе объекта SerialBlob. Данные значения SQL BLOB можно материализовать на клиенте в виде массива байтов (с помощью метода Blob.getBytes) или потока необработанных байтов (с помощью метода Blob.getBinaryStream).

Методы SerialBlob позволяют создать копию объекта SerialBlob в виде массива байтов или потока. Они также позволяют найти заданный шаблон байтов или объект Blob внутри объекта SerialBlob.

3.0 SerialClob

Сериализуемое сопоставление значения SQL CLOB в языке программирования Java.

Класс SerialClob предоставляет конструктор для создания экземпляра из объекта Clob. Обратите внимание, что объект Clob должен передать данные значения SQL CLOB клиенту до создания на его основе объекта SerialClob. Данные значения SQL CLOB можно материализовать на клиенте в виде потока символов Unicode.

Методы SerialClob позволяют получить подстроку из объекта SerialClob или найти начало шаблона символов.

5.0 SerialDatalink

Сериализуемое сопоставление значения SQL DATALINK в языке программирования Java. Значение DATALINK ссылается на файл вне базового источника данных, которым управляет исходный источник данных.

Реализации RowSet могут использовать метод RowSet.getURL() для получения объекта java.net.URL, который можно использовать для работы с внешними данными.
   java.net.URL url = rowset.getURL(1);

6.0 SerialJavaObject

Сериализуемое сопоставление значения SQL JAVA_OBJECT в языке программирования Java. Если экземпляр объекта Java реализует интерфейс Serializable, этот класс просто выполняет его сериализацию.

Если сериализация невозможна, поскольку объект Java не сериализуется напрямую, этот класс попытается сериализовать все нестатические члены, чтобы обеспечить сериализацию состояния экземпляра объекта. Статические и transient-поля сериализовать нельзя; попытка сделать это приведёт к выбрасыванию исключения SerialException.

7.0 SerialRef

Сериализуемое сопоставление между типом SQL REF и языком программирования Java.

Класс SerialRef предоставляет конструктор для создания экземпляра SerialRef из типа Ref, а также методы для получения и задания типа объекта Ref.

8.0 SerialStruct

Сериализуемое сопоставление структурированного типа SQL в языке программирования Java. Каждый атрибут, который ещё не является сериализуемым, преобразуется в сериализуемую форму; если атрибут сам является структурированным типом, каждый его атрибут, который ещё не является сериализуемым, также преобразуется в сериализуемую форму.

Кроме того, если объект Map передаётся одному из конструкторов или методу getAttributes, структурированный тип сопоставляется пользовательским образом в соответствии с сопоставлением, заданным в объекте Map.
Класс SerialStruct предоставляет конструктор для создания экземпляра из объекта Struct, метод для получения имени типа SQL структурированного типа SQL в базе данных и методы для получения значений его атрибутов.

9.0 SQLInputImpl

Входной поток, используемый для пользовательского сопоставления типов, определённых пользователем (UDT). Объект SQLInputImpl — это входной поток, содержащий значения, которые являются атрибутами UDT. Этот класс используется драйвером внутри при вызове метода getObject для структурированного типа SQL или DISTINCT-типа с пользовательским сопоставлением; программист никогда не вызывает методы SQLInputImpl напрямую.

Класс SQLInputImpl предоставляет набор методов чтения, аналогичных методам получения ResultSet. Эти методы позволяют считывать значения из объекта SQLInputImpl. Метод wasNull используется для определения того, было ли последнее прочитанное значение SQL NULL.

При вызове конструктора или метода получения, принимающего объект Map, драйвер JDBC вызывает метод SQLData.getSQLType, чтобы определить тип SQL пользовательски сопоставляемого UDT. Драйвер создаёт экземпляр SQLInputImpl и заполняет его атрибутами UDT. Затем драйвер передаёт входной поток методу SQLData.readSQL, который, в свою очередь, вызывает методы SQLInputImpl для чтения атрибутов из входного потока.

10.0 SQLOutputImpl

Выходной поток для записи атрибутов пользовательски сопоставленного типа, определённого пользователем (UDT), обратно в базу данных. Драйвер использует этот интерфейс внутри; его методы никогда не вызываются непосредственно программистом приложения.

Когда приложение вызывает метод PreparedStatement.setObject, драйвер проверяет, является ли записываемое значение UDT с пользовательским сопоставлением. Если да, в карте типов будет запись с объектом Class для класса, реализующего SQLData для этого UDT. Если записываемое значение является экземпляром SQLData, драйвер создаст экземпляр SQLOutputImpl и передаст его методу SQLData.writeSQL. Метод writeSQL, в свою очередь, вызывает соответствующие методы записи SQLOutputImpl, чтобы записать данные из объекта SQLData в выходной поток SQLOutputImpl в качестве представления типа SQL, определённого пользователем.

Пользовательское сопоставление

API JDBC предоставляет механизмы для сопоставления структурированного типа SQL или типа DISTINCT с языком программирования Java. Обычно структурированный тип сопоставляется с классом, а его атрибуты — с полями этого класса. (Можно считать, что у типа DISTINCT есть один атрибут.) Однако существуют и другие возможности, и сопоставлений может быть сколько угодно.

Программист задаёт сопоставление, реализуя интерфейс SQLData. Например, если структурированный тип SQL с именем AUTHORS содержит атрибуты NAME, TITLE и PUBLISHER, его можно сопоставить с классом Java с именем Authors. Класс Authors может содержать поля name, title и publisher, которым сопоставляются атрибуты 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 и добавить в него запись, связывающую AUTHORS и Authors.
    java.util.Map map = new java.util.HashMap();
    map.put("SCHEMA_NAME.AUTHORS", Class.forName("Authors");
Теперь объект Map map содержит запись с полным именем структурированного типа SQL и объектом Class для класса Authors. Его можно передать методу, чтобы указать драйверу, как сопоставлять AUTHORS с Authors.

Для отключённого объекта RowSet пользовательское сопоставление можно выполнить только в том случае, если объект Map передан методу или конструктору, выполняющему пользовательское сопоставление. Для подключённых объектов RowSet ситуация иная, поскольку они поддерживают соединение с источником данных. Метод, выполняющий пользовательское сопоставление и вызываемый отключённым объектом RowSet, может использовать объект Map, связанный с используемым объектом Connection. Иными словами, если карта не указана, по умолчанию можно использовать карту типов соединения.

Since:
1.5
Пакет Описание
javax.sql.rowset
Стандартные интерфейсы и базовые классы для реализаций JDBC RowSet.
javax.sql.rowset.spi
Стандартные классы и интерфейсы, которые сторонний поставщик должен использовать при реализации поставщика синхронизации.
Класс Описание
SerialArray
Сериализованная версия объекта Array, который представляет собой сопоставление значения SQL ARRAY в языке программирования Java.
SerialBlob
Сериализованное сопоставление значения SQL BLOB в языке программирования Java.
SerialClob
Сериализованное сопоставление значения SQL CLOB в языке программирования Java.
SerialDatalink
Сериализованное сопоставление значения SQL DATALINK в языке программирования Java.
SerialException
Указывает на ошибку сериализации или десериализации таких типов SQL, как BLOB, CLOB, STRUCT or ARRAY, а также таких типов SQL, как DATALINK and JAVAOBJECT
SerialJavaObject
Сериализуемое сопоставление значения SQL JAVA_OBJECT в языке программирования Java.
SerialRef
Сериализованное сопоставление объекта Ref, который представляет собой сопоставление значения SQL REF в языке программирования Java.
SerialStruct
Сериализованное сопоставление структурированного типа SQL в языке программирования Java.
SQLInputImpl
Входной поток, используемый для пользовательского сопоставления типов, определённых пользователем (UDT).
SQLOutputImpl
Выходной поток для записи атрибутов пользовательски сопоставленного типа, определённого пользователем (UDT), обратно в базу данных.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и работающие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторские права © 1993, 2025, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.sql.rowset/javax/sql/rowset/serial/package-summary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API