Spec-Zone.ru › OpenJDK 21

Класс 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 эталонной реализации. Таким образом, в приведенном выше фрагменте кода, если никакая реализация с именем com.fred.providers.HighAvailabilitySyncProvider не была зарегистрирована в экземпляре SyncFactory , 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
Since:
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 получил свои данные.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

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.
Возвращает:
целое число, являющееся одной из следующих констант: 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 получил свои данные.
Возвращает:
значение, указывающее, поддерживает ли этот объект SyncProvider обновление SQL VIEW; одна из следующих: SyncProvider.UPDATABLE_VIEW_SYNC, SyncProvider.NONUPDATABLE_VIEW_SYNC

getVersion

public abstract String getVersion()
Возвращает версию релиза этой инстанции SyncProvider.
Возвращает:
строка, содержащая информацию о версии релиза реализации SyncProvider

getVendor

public abstract String getVendor()
Возвращает имя поставщика этой инстанции SyncProvider
Возвращает:
строка, содержащая имя поставщика реализации SyncProvider

© 1993, 2023, 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/21/docs/api/java.sql.rowset/javax/sql/rowset/spi/SyncProvider.html

Spec-Zone.ru

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