Класс SyncProvider
public abstract class SyncProvider extends Object
RowSet объектов. Реализация SyncProvider — это класс, который расширяет абстрактный класс SyncProvider. Реализация SyncProvider идентифицируется уникальным идентификатором, который представляет собой полное имя класса. Это имя должно быть зарегистрировано в SPI SyncFactory, тем самым делая реализацию доступной для всех реализаций RowSet. Механизм фабрики в эталонной реализации использует это имя для создания реализации, которая может затем предоставить объект RowSet со своим читателем (объект javax.sql.RowSetReader) и своим писателем (объект javax.sql.RowSetWriter).
Спецификация JDBC RowSet Implementations предоставляет две эталонные реализации абстрактного класса 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"); - Используя метод
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
- См. также:
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
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 |
Устанавливает блокировку на базовом источнике данных на уровне, указанном в datasource_lock. |
abstract int |
supportsUpdatableView() |
Возвращает, может ли эта реализация SyncProvider выполнить синхронизацию между объектом RowSet и SQL-VIEW в источнике данных, из которого объект RowSet получил свои данные. |
Подробное описание полей
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
RowSet, который использует этот объект SyncProvider.- См. также:
DATASOURCE_TABLE_LOCK
public static final int DATASOURCE_TABLE_LOCK
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
SyncProvider скорректировать своё поведение, увеличив или уменьшив уровень оптимизма, предоставляемого для успешной синхронизации.- Параметры:
-
datasource_lock- одна из следующих констант, указывающих требуемый уровень блокировки источника данных:SyncProvider.DATASOURCE_NO_LOCK, SyncProvider.DATASOURCE_ROW_LOCK, SyncProvider.DATASOURCE_TABLE_LOCK, SyncProvider.DATASOURCE_DB_LOCK, - Исключения:
-
SyncProviderException- если установлен неподдерживаемый уровень блокировки источника данных. - См. также:
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- если произошла ошибка при определении уровня блокировки источника данных. - См. также:
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, 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/spi/SyncProvider.html