Spec-Zone.ru › OpenJDK 27

Класс SyncProvider

java.lang.Object
javax.sql.rowset.spi.SyncProvider
public abstract class SyncProvider extends Object
Механизм синхронизации, предоставляющий возможности чтения и записи для отключённых объектов RowSet. Реализация SyncProvider — это класс, расширяющий абстрактный класс SyncProvider.

Реализация SyncProvider идентифицируется по уникальному идентификатору, которым является полное имя её класса. Это имя необходимо зарегистрировать в SPI SyncFactory, чтобы реализация стала доступна всем реализациям RowSet. Фабричный механизм в эталонной реализации использует это имя для создания экземпляра реализации, который затем может предоставить объекту RowSet средство чтения (объект javax.sql.RowSetReader) и средство записи (объект javax.sql.RowSetWriter).

Спецификация реализаций Jdbc RowSet предоставляет две эталонные реализации абстрактного класса SyncProvider: RIOptimisticProvider и RIXMLProvider. Реализация RIOptimisticProvider может настроить любую реализацию RowSet с объектом RowSetReader и объектом RowSetWriter. Однако только реализация RIXMLProvider может настроить объект XmlReader и объект XmlWriter. Объект WebRowSet использует объект XmlReader для чтения данных в формате XML и заполнения ими самого себя. Он использует объект XmlWriter для записи самого себя в поток или объект java.io.Writer в формате XML.

1.0 Соглашение об именовании реализаций

При выборе имён реализаций SyncProvider следует учитывать следующее:
  • Именем реализации SyncProvider является полное имя её класса.
  • Рекомендуется, чтобы поставщики размещали реализацию SyncProvider в пакете с именем providers.

Например, если бы поставщик Fred, Inc. предлагал реализацию SyncProvider, она могла бы выглядеть следующим образом:

    Vendor name:  Fred, Inc.
    Domain name of vendor:  com.fred
    Package name:  com.fred.providers
    SyncProvider implementation class name:  HighAvailabilityProvider

    Fully qualified class name of SyncProvider implementation:
                       com.fred.providers.HighAvailabilityProvider

В следующей строке кода полное имя используется для регистрации этой реализации в статическом экземпляре SyncFactory.

    SyncFactory.registerProvider(
                         "com.fred.providers.HighAvailabilityProvider");

Объект SyncProvider по умолчанию, предоставляемый эталонной реализацией, использует следующее имя:

    com.sun.rowset.providers.RIOptimisticProvider

Поставщикам следует обратиться к эталонным поставщикам синхронизации реализации для получения дополнительных рекомендаций по созданию новой реализации SyncProvider.

2.0 Как объект RowSet получает поставщика

Отключённый объект Rowset может получить доступ к объекту SyncProvider одним из двух способов:
  • С помощью конструктора
          CachedRowSet crs = new CachedRowSet(
                     "com.fred.providers.HighAvailabilitySyncProvider");
         
  • С помощью метода setSyncProvider
          CachedRowSet crs = new CachedRowSet();
          crs.setSyncProvider("com.fred.providers.HighAvailabilitySyncProvider");
         

По умолчанию эталонные реализации поставщиков синхронизации RowSet всегда доступны платформе Java. Если другие подключаемые поставщики синхронизации не были зарегистрированы надлежащим образом, SyncFactory автоматически создаст экземпляр эталонной реализации SyncProvider по умолчанию. Таким образом, в предыдущем фрагменте кода, если в экземпляре SyncFactory не зарегистрирована реализация с именем com.fred.providers.HighAvailabilitySyncProvider, crs будет назначен поставщик по умолчанию из эталонной реализации — com.sun.rowset.providers.RIOptimisticProvider.

3.0 Нарушения и проблемы синхронизации

Если обновление между отключённым объектом RowSet и источником данных нарушает исходный запрос или ограничения базового источника данных, это приведёт к неопределённому поведению всех отключённых реализаций RowSet и назначенных им реализаций SyncProvider. Отсутствие определения поведения при возникновении таких нарушений предоставляет реализации SyncProvider большую гибкость в выборе наиболее подходящего способа действий.

Реализация SyncProvider может предусмотреть специальный обработчик для обработки определённой части нарушений запроса. Однако если нарушение исходного запроса или более общее нарушение ограничений источника данных не обрабатывается реализацией SyncProvider, все объекты SyncProvider должны выбрасывать исключение SyncProviderException.

4.0 Обновляемые представления SQL

Любой отключённый или подключённый объект RowSet может быть заполнен результатами SQL-запроса, изначально составленного на основе SQL VIEW. Во многих случаях базовое представление можно обновить, однако для такого обновления требуются дополнительные метаданные, которые могут различаться. Класс SyncProvider предоставляет две константы, указывающие, поддерживает ли реализация обновление SQL VIEW.
  • NONUPDATABLE_VIEW_SYNC — указывает, что реализация SyncProvider не поддерживает синхронизацию с SQL VIEW в качестве базового источника данных для объекта RowSet.
  • UPDATABLE_VIEW_SYNC — указывает, что реализация SyncProvider поддерживает синхронизацию с SQL VIEW в качестве базового источника данных.

По умолчанию объект RowSet нельзя обновлять, если он был заполнен данными из SQL VIEW.

5.0 Константы SyncProvider

Класс SyncProvider предоставляет три группы констант, используемых в качестве возвращаемых значений или параметров методов SyncProvider. Объекты SyncProvider могут быть реализованы для синхронизации объекта RowSet с его базовым источником данных с разной степенью тщательности. Первая группа констант указывает, как выполняется синхронизация. Например, GRADE_NONE указывает, что объект SyncProvider не будет проверять корректность данных и просто запишет данные RowSet в источник данных. GRADE_MODIFIED_AT_COMMIT указывает, что поставщик будет проверять корректность только изменённых данных. Другие уровни предусматривают проверку корректности всех данных или установку блокировок при изменении либо загрузке данных.
  1. Константы, указывающие уровень синхронизации объекта SyncProvider
    • SyncProvider.GRADE_NONE
    • SyncProvider.GRADE_MODIFIED_AT_COMMIT
    • SyncProvider.GRADE_CHECK_ALL_AT_COMMIT
    • SyncProvider.GRADE_LOCK_WHEN_MODIFIED
    • SyncProvider.GRADE_LOCK_WHEN_LOADED
  2. Константы, указывающие, какие блокировки установлены на источнике данных
    • SyncProvider.DATASOURCE_NO_LOCK
    • SyncProvider.DATASOURCE_ROW_LOCK
    • SyncProvider.DATASOURCE_TABLE_LOCK
    • SyncProvider.DATASOURCE_DB_LOCK
  3. Константы, указывающие, может ли объект SyncProvider выполнять обновления SQL VIEW
    Эти константы описаны в предыдущем разделе (4.0).
    • SyncProvider.UPDATABLE_VIEW_SYNC
    • SyncProvider.NONUPDATABLE_VIEW_SYNC
Начиная с:
1.5
См. также:
  • SyncFactory
  • SyncFactoryException

Краткое описание полей

Модификатор и тип Поле Описание
static final int DATASOURCE_DB_LOCK
Указывает, что на весь источник данных, из которого получает данные объект RowSet, использующий этот объект SyncProvider, установлена блокировка.
static final int DATASOURCE_NO_LOCK
Указывает, что на исходном источнике данных нет блокировок.
static final int DATASOURCE_ROW_LOCK
Указывает, что блокировка установлена на строках, затронутых исходным SQL-оператором, использованным для заполнения объекта RowSet, который использует этот объект SyncProvider.
static final int DATASOURCE_TABLE_LOCK
Указывает, что блокировка установлена на всех таблицах, затронутых исходным SQL-оператором, использованным для заполнения объекта RowSet, который использует этот объект SyncProvider.
static final int GRADE_CHECK_ALL_AT_COMMIT
Указывает на высокий уровень оптимистической синхронизации относительно исходного источника данных.
static final int GRADE_CHECK_MODIFIED_AT_COMMIT
Указывает на низкий уровень оптимистической синхронизации относительно исходного источника данных.
static final int GRADE_LOCK_WHEN_LOADED
Указывает на наиболее пессимистичный уровень синхронизации относительно исходного источника данных.
static final int GRADE_LOCK_WHEN_MODIFIED
Указывает на пессимистичный уровень синхронизации относительно исходного источника данных.
static final int GRADE_NONE
Указывает, что синхронизация с исходным источником данных не предоставляется.
static final int NONUPDATABLE_VIEW_SYNC
Указывает, что реализация SyncProvider не поддерживает синхронизацию между объектом RowSet и SQL VIEW, использованным для его заполнения.
static final int UPDATABLE_VIEW_SYNC
Указывает, что реализация SyncProvider поддерживает синхронизацию между объектом RowSet и SQL VIEW, использованным для его заполнения.

Краткое описание конструкторов

Конструктор Описание
SyncProvider()
Создаёт объект SyncProvider по умолчанию.

Краткое описание методов

Модификатор и тип Метод Описание
abstract int getDataSourceLock()
Возвращает текущий уровень блокировки источника данных, действующий в этой реализации SyncProvider.
abstract int getProviderGrade()
Возвращает константу, указывающую уровень синхронизации, который объект RowSet может ожидать от этого объекта SyncProvider.
abstract String getProviderID()
Возвращает уникальный идентификатор этого объекта SyncProvider.
abstract RowSetReader getRowSetReader()
Возвращает объект javax.sql.RowSetReader, который можно использовать для заполнения объекта RowSet данными.
abstract RowSetWriter getRowSetWriter()
Возвращает объект javax.sql.RowSetWriter, который можно использовать для записи данных объекта RowSet обратно в базовый источник данных.
abstract String getVendor()
Возвращает имя поставщика этого экземпляра SyncProvider.
abstract String getVersion()
Возвращает версию выпуска этого экземпляра SyncProvider.
abstract void setDataSourceLock(int datasource_lock)
Устанавливает блокировку базового источника данных на уровне, указанном параметром datasource_lock.
abstract int supportsUpdatableView()
Возвращает значение, указывающее, может ли эта реализация SyncProvider выполнять синхронизацию между объектом RowSet и SQL VIEW в источнике данных, из которого объект RowSet получил свои данные.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект другому объекту.
protected void finalize()
Устарел, подлежит удалению: этот элемент API может быть удалён в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого объекта Object.
int hashCode()
Возвращает хеш-код этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения определённого времени.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова notify или interrupt, либо до истечения определённого времени.

Подробное описание полей

GRADE_NONE

public static final int GRADE_NONE
Указывает, что синхронизация с исходным источником данных не предоставляется. Реализация SyncProvider, возвращающая этот уровень, просто попытается записать обновления объекта RowSet в базовый источник данных, не проверяя корректность каких-либо данных.
См. также:
  • Значения констант полей

GRADE_CHECK_MODIFIED_AT_COMMIT

public static final int GRADE_CHECK_MODIFIED_AT_COMMIT
Указывает на низкий уровень оптимистической синхронизации относительно исходного источника данных. Реализация SyncProvider, возвращающая этот уровень, проверяет только изменившиеся строки.
См. также:
  • Значения констант полей

GRADE_CHECK_ALL_AT_COMMIT

public static final int GRADE_CHECK_ALL_AT_COMMIT
Указывает на высокий уровень оптимистической синхронизации относительно исходного источника данных. Реализация SyncProvider, возвращающая этот уровень, проверяет все строки, включая неизменившиеся.
См. также:
  • Значения констант полей

GRADE_LOCK_WHEN_MODIFIED

public static final int GRADE_LOCK_WHEN_MODIFIED
Указывает на пессимистичный уровень синхронизации относительно исходного источника данных. Реализация SyncProvider, возвращающая этот уровень, блокирует строку в исходном источнике данных.
См. также:
  • Значения констант полей

GRADE_LOCK_WHEN_LOADED

public static final int GRADE_LOCK_WHEN_LOADED
Указывает на наиболее пессимистичный уровень синхронизации относительно исходного источника данных. Реализация SyncProvider, возвращающая этот уровень, блокирует всё представление и/или таблицу, затронутые исходным оператором, использованным для заполнения объекта RowSet.
См. также:
  • Значения констант полей

DATASOURCE_NO_LOCK

public static final int DATASOURCE_NO_LOCK
Указывает, что на исходном источнике данных нет блокировок. Это настройка блокировки по умолчанию для всех реализаций SyncProvider, если объект RowSet не укажет иное.
См. также:
  • Значения констант полей

DATASOURCE_ROW_LOCK

public static final int DATASOURCE_ROW_LOCK
Указывает, что блокировка установлена на строках, затронутых исходным SQL-оператором, использованным для заполнения объекта RowSet, который использует этот объект SyncProvider.
См. также:
  • Значения констант полей

DATASOURCE_TABLE_LOCK

public static final int DATASOURCE_TABLE_LOCK
Указывает, что блокировка установлена на всех таблицах, затронутых исходным SQL-оператором, использованным для заполнения объекта RowSet, который использует этот объект SyncProvider.
См. также:
  • Значения констант полей

DATASOURCE_DB_LOCK

public static final int DATASOURCE_DB_LOCK
Указывает, что блокировка установлена на весь источник данных, из которого получает данные объект RowSet, использующий этот объект SyncProvider.
См. также:
  • Значения констант полей

UPDATABLE_VIEW_SYNC

public static final int UPDATABLE_VIEW_SYNC
Указывает, что реализация SyncProvider поддерживает синхронизацию между объектом RowSet и SQL VIEW, использованным для его заполнения.
См. также:
  • Значения констант полей

NONUPDATABLE_VIEW_SYNC

public static final int NONUPDATABLE_VIEW_SYNC
Указывает, что реализация SyncProvider не поддерживает синхронизацию между объектом RowSet и SQL VIEW, использованным для его заполнения.
См. также:
  • Значения констант полей

Подробное описание конструкторов

SyncProvider

public SyncProvider()
Создаёт объект SyncProvider по умолчанию.

Подробное описание методов

getProviderID

public abstract String getProviderID()
Возвращает уникальный идентификатор этого объекта SyncProvider.
Возвращает:
объект String с полным именем класса этого объекта SyncProvider

getRowSetReader

public abstract RowSetReader getRowSetReader()
Возвращает объект javax.sql.RowSetReader, который можно использовать для заполнения объекта RowSet данными.
Возвращает:
объект javax.sql.RowSetReader

getRowSetWriter

public abstract RowSetWriter getRowSetWriter()
Возвращает объект javax.sql.RowSetWriter, который можно использовать для записи данных объекта RowSet обратно в базовый источник данных.
Возвращает:
объект javax.sql.RowSetWriter

getProviderGrade

public abstract int getProviderGrade()
Возвращает константу, указывающую уровень синхронизации, который объект RowSet может ожидать от этого объекта SyncProvider.
Возвращает:
значение int, равное одной из следующих констант: SyncProvider.GRADE_NONE, SyncProvider.GRADE_CHECK_MODIFIED_AT_COMMIT, SyncProvider.GRADE_CHECK_ALL_AT_COMMIT, SyncProvider.GRADE_LOCK_WHEN_MODIFIED, SyncProvider.GRADE_LOCK_WHEN_LOADED

setDataSourceLock

public abstract void setDataSourceLock(int datasource_lock) throws SyncProviderException
Устанавливает блокировку базового источника данных на уровне, указанном параметром datasource_lock. Это должно побудить SyncProvider изменить своё поведение, повысив или понизив уровень уверенности в успешной синхронизации.
Параметры:
datasource_lock — одна из следующих констант, указывающая требуемый уровень блокировки источника данных:
          SyncProvider.DATASOURCE_NO_LOCK,
          SyncProvider.DATASOURCE_ROW_LOCK,
          SyncProvider.DATASOURCE_TABLE_LOCK,
          SyncProvider.DATASOURCE_DB_LOCK,
Выбрасывает:
SyncProviderException — если задан неподдерживаемый уровень блокировки источника данных.
См. также:
  • getDataSourceLock()

getDataSourceLock

public abstract int getDataSourceLock() throws SyncProviderException
Возвращает текущий уровень блокировки источника данных, действующий в этой реализации SyncProvider.
Возвращает:
константу, указывающую текущий уровень блокировки источника данных, действующий в этом объекте SyncProvider; одно из следующих значений:
          SyncProvider.DATASOURCE_NO_LOCK,
          SyncProvider.DATASOURCE_ROW_LOCK,
          SyncProvider.DATASOURCE_TABLE_LOCK,
          SyncProvider.DATASOURCE_DB_LOCK
Выбрасывает:
SyncProviderException — если произошла ошибка при определении уровня блокировки источника данных.
См. также:
  • setDataSourceLock(int)

supportsUpdatableView

public abstract int supportsUpdatableView()
Возвращает значение, указывающее, может ли эта реализация SyncProvider выполнять синхронизацию между объектом RowSet и SQL VIEW в источнике данных, из которого объект RowSet получил свои данные.
Возвращает:
значение int, указывающее, поддерживает ли этот объект SyncProvider обновление SQL VIEW; одно из следующих значений: SyncProvider.UPDATABLE_VIEW_SYNC, SyncProvider.NONUPDATABLE_VIEW_SYNC

getVersion

public abstract String getVersion()
Возвращает версию выпуска этого экземпляра SyncProvider.
Возвращает:
объект String с указанием версии выпуска реализации SyncProvider

getVendor

public abstract String getVendor()
Возвращает имя поставщика этого экземпляра SyncProvider.
Возвращает:
объект String с указанием имени поставщика этой реализации SyncProvider

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, 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.

Spec-Zone.ru

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