Класс 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"); - С помощью метода
setSyncProviderCachedRowSet 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не поддерживает синхронизацию с представлением SQLVIEWв качестве базового источника данных для объектаRowSet. -
UPDATABLE_VIEW_SYNC— указывает, что реализацияSyncProviderподдерживает синхронизацию с представлением SQLVIEWв качестве базового источника данных.
По умолчанию объект 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обновлять представление SQLVIEW
Эти константы описаны в предыдущем разделе (4.0).- SyncProvider.UPDATABLE_VIEW_SYNC
- SyncProvider.NONUPDATABLE_VIEW_SYNC
- Начиная с версии:
- 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.- Возвращает:
- значение 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
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обновление представления SQLVIEW; одно из следующих: 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, 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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.sql.rowset/javax/sql/rowset/spi/SyncProvider.html