Класс SyncProvider
- java.lang.Object
-
- javax.sql.rowset.spi.SyncProvider
public abstract class SyncProvider extends Object
Механизм синхронизации, предоставляющий возможности чтения/записи для отключенных RowSet объектов. Реализация SyncProvider — это класс, который расширяет абстрактный класс SyncProvider.
Реализация SyncProvider идентифицируется уникальным идентификатором, который является полным квалифицированным именем класса. Это имя должно быть зарегистрировано в SyncFactory SPI, делая реализацию доступной для всех реализаций 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 в корпорации Oracle, отправив электронное письмо на адрес jdbc@sun.com. Oracle будет поддерживать базу данных, перечисляющую доступные реализации SyncProvider для использования с совместимыми реализациями RowSet. Эта база данных будет аналогична уже поддерживаемой базе данных, перечисляющей доступные драйверы JDBC.
Поставщики должны обратиться к эталонным реализациям поставщиков синхронизации для получения дополнительного руководства по реализации новой реализации SyncProvider.
2.0 Как объект RowSet получает своего поставщика
Отключенный объект Rowset может получить доступ к объекту SyncProvider двумя способами: - Использование конструктора
CachedRowSet crs = new CachedRowSet( "com.fred.providers.HighAvailabilitySyncProvider"); - Использование метода
setSyncProviderCachedRowSet 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 указывает, что поставщик проверит только измененные данные на предмет действительности. Другие классы проверяют все данные на предмет действительности или устанавливают блокировки при изменении или загрузке данных. - Константы для указания степени синхронизации объекта
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
- Константы для указания устанавливаемых блокировок на источнике данных
- SyncProvider.DATASOURCE_NO_LOCK
- SyncProvider.DATASOURCE_ROW_LOCK
- SyncProvider.DATASOURCE_TABLE_LOCK
- SyncProvider.DATASOURCE_DB_LOCK
- Константы для указания возможности объекта
SyncProviderвыполнять обновления SQL-представленияVIEW
Эти константы объяснены в предыдущем разделе (4.0).- SyncProvider.UPDATABLE_VIEW_SYNC
- SyncProvider.NONUPDATABLE_VIEW_SYNC
- Since:
- 1.5
- См. также:
-
SyncFactory,SyncFactoryException
Поля
| Модификатор и тип | Поле | Описание |
|---|---|---|
static int | DATASOURCE_DB_LOCK | Указывает, что блокировка размещается на всем источнике данных, являющемся источником данных для объекта |
static int | DATASOURCE_NO_LOCK | Указывает, что блокировки на исходном источнике данных отсутствуют. |
static int | DATASOURCE_ROW_LOCK | Указывает, что блокировка размещается на строках, затронутых исходным SQL-запросом, используемым для заполнения объекта |
static int | DATASOURCE_TABLE_LOCK | Указывает, что блокировка размещается на всех таблицах, затронутых исходным SQL-запросом, используемым для заполнения объекта |
static int | GRADE_CHECK_ALL_AT_COMMIT | Указывает оптимистическую синхронизацию высокого уровня по отношению к исходному источнику данных. |
static int | GRADE_CHECK_MODIFIED_AT_COMMIT | Указывает оптимистическую синхронизацию низкого уровня по отношению к исходному источнику данных. |
static int | GRADE_LOCK_WHEN_LOADED | Указывает наиболее пессимистическую степень синхронизации по отношению к исходному источнику данных. |
static int | GRADE_LOCK_WHEN_MODIFIED | Указывает пессимистическую степень синхронизации по отношению к исходному источнику данных. |
static int | GRADE_NONE | Указывает, что синхронизация с исходным источником данных не предоставляется. |
static int | NONUPDATABLE_VIEW_SYNC | Указывает, что реализация |
static int | UPDATABLE_VIEW_SYNC | Указывает, что реализация |
Конструкторы
| Конструктор | Описание |
|---|---|
SyncProvider() | Создает объект |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
abstract int | getDataSourceLock() | Возвращает текущий уровень блокировки источника данных, активный в этой |
abstract int | getProviderGrade() | Возвращает константу, указывающую степень синхронизации, которую объект |
abstract String | getProviderID() | Возвращает уникальный идентификатор для этого объекта |
abstract RowSetReader | getRowSetReader() | Возвращает объект |
abstract RowSetWriter | getRowSetWriter() | Возвращает объект |
abstract String | getVendor() | Возвращает имя производителя этого экземпляра |
abstract String | getVersion() | Возвращает версию выпуска этого экземпляра |
abstract void | setDataSourceLock(int datasource_lock) | Устанавливает блокировку на исходном источнике данных на уровне, указанном в datasource_lock. |
abstract int | supportsUpdatableView() | Возвращает, может ли данная реализация |
Методы, объявленные в классе 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 получил свои данные.
- Возвращает:
- значения
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
© 1993, 2020, 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/11/docs/api/java.sql.rowset/javax/sql/rowset/spi/SyncProvider.html