Spec-Zone.ru › OpenJDK 17

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

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

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

1.0 SerialArray

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

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

2.0 SerialBlob

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

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

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

3.0 SerialClob

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

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

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

5.0 SerialDatalink

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

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

6.0 SerialJavaObject

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

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

7.0 SerialRef

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

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

8.0 SerialStruct

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

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

9.0 SQLInputImpl

Поток ввода, используемый для пользовательского сопоставления типов определяемых пользователем (UDTs). Объект SQLInputImpl — это поток ввода, содержащий поток значений, которые являются атрибутами UDT. Этот класс используется драйвером в фоновом режиме при вызове метода getObject на структурированном или дискретном типе SQL с настраиваемым сопоставлением; программист никогда не вызывает методы 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 , используемым. Иными словами, если карта не указана, по умолчанию можно использовать карту типов подключения.

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

© 1993, 2021, 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/17/docs/api/java.sql.rowset/javax/sql/rowset/serial/package-summary.html

Spec-Zone.ru

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