public abstract class SyncProvider extends Object
RowSet对象提供读写器功能。
一个SyncProvider实现是一个扩展SyncProvider抽象类的类。
A SyncProvider实现由唯一的ID标识,唯一的ID是完全限定的类名。 该名称必须在SyncFactory SPI上注册,从而使实现可用于所有RowSet实现。 在参考实施工厂机制使用该名称来实例化的实施,则其可提供RowSet对象与其读取器(一个javax.sql.RowSetReader对象)及其写入器(一个javax.sql.RowSetWriter对象)。
Jdbc RowSet实现规范提供了SyncProvider抽象类的两个参考实现: RIOptimisticProvider和RIXMLProvider 。 RIOptimisticProvider可以使用RowSetReader对象和RowSetWriter对象设置任何RowSet实现。 但是,只有RIXMLProvider实现可以设置XmlReader对象和XmlWriter对象。 WebRowSet对象使用XmlReader对象以XML格式读取数据以填充该数据。 它使用XmlWriter对象将其自身写入流或java.io.Writer对象以XML格式。
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
供应商可以通过向jdbc@sun.com发送电子邮件,向Oracle Corporation注册一个SyncProvider实现类名称。 Oracle将维护一个数据库,列出可用的SyncProvider实现,以便与符合RowSet的RowSet SyncProvider一起使用。 该数据库将与已经维护的数据库类似,以列出可用的JDBC驱动程序。
供应商应参考参考实现同步提供程序,以获取有关如何实现新的SyncProvider实现的更多指导。
RowSet对象如何获取它的提供者 Rowset对象可以通过以下两种方式之一访问SyncProvider对象:
CachedRowSet crs = new CachedRowSet(
"com.fred.providers.HighAvailabilitySyncProvider"); setSyncProvider方法 CachedRowSet crs = new CachedRowSet();
crs.setSyncProvider("com.fred.providers.HighAvailabilitySyncProvider"); 默认情况下,RowSet同步提供程序的RowSet实现始终可用于Java平台。 如果没有其他可插拔同步提供程序已经被正确注册,那么SyncFactory将自动生成默认的SyncProvider参考实现的实例。 因此,在上述代码片段中,如果没有在SyncFactory实例中注册了名为com.fred.providers.HighAvailabilitySyncProvider的SyncFactory ,则crs将被分配给参考实现中的默认提供者,即com.sun.rowset.providers.RIOptimisticProvider 。
RowSet对象和数据源之间的更新违反原始查询或基础数据源约束,则会导致所有断开RowSet RowSet实现及其指定的SyncProvider实现的未定义行为。
当发生这种违规行为时,不定义行为为SyncProvider实施确定自己最佳行动方案提供了更大的灵活性。
A SyncProvider实现可以选择实现特定的处理程序来处理查询违规的一个子集。 但是,如果SyncProvider实施不处理原始查询违规或更一般的数据源SyncProvider违规,则所有SyncProvider对象都必须抛出SyncProviderException 。
RowSet对象从每个从SQL最初制定了一个SQL查询来填充VIEW 。
虽然在许多情况下可以对基础视图执行更新,但是这种更新需要额外的元数据,这可能会有所不同。
SyncProvider类提供两个常量来指示实现是否支持更新SQL VIEW 。
NONUPDATABLE_VIEW_SYNC - 表示SyncProvider实现不支持与SQL VIEW作为RowSet对象的基础数据源。 UPDATABLE_VIEW_SYNC - 表示SyncProvider实现支持与SQL VIEW作为基础数据源。 如果RowSet对象使用SQL VIEW数据填充,则默认值不可VIEW 。
SyncProvider常数 SyncProvider类提供了三组常数,用作SyncProvider方法的返回值或参数。
SyncProvider对象可以被实现为以不同程度的谨慎来执行RowSet对象及其底层数据源之间的RowSet 。
第一组常量表示如何处理同步。
例如, GRADE_NONE表示SyncProvider对象不会关心哪些数据有效,并且将简单地将RowSet数据写入数据源。
GRADE_MODIFIED_AT_COMMIT表示提供者只会检查修改后的数据是否有效。
其他等级检查数据是否有效,或者在数据修改或加载时设置锁定。
SyncProvider对象的同步等级
SyncProvider对象是否可以执行对SQL VIEW更新的VIEW SyncFactory , SyncFactoryException
| Modifier and Type | Field and Description |
|---|---|
static int |
DATASOURCE_DB_LOCK
表示在整个数据源上放置一个锁,该数据源是使用此
SyncProvider对象的
RowSet对象的数据源。
|
static int |
DATASOURCE_NO_LOCK
表示始发数据源上没有锁。
|
static int |
DATASOURCE_ROW_LOCK
表示锁定被放置在用于填充使用此
SyncProvider对象的
RowSet对象的原始SQL语句所触及的行上。
|
static int |
DATASOURCE_TABLE_LOCK
表示在用于填充使用此
SyncProvider对象的
RowSet对象的原始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
表明
SyncProvider实现
不支持之间的同步
RowSet对象和SQL
VIEW用来填充它。
|
static int |
UPDATABLE_VIEW_SYNC
表示
SyncProvider实现支持RowSet对象与用于填充对象的SQL
VIEW之间的
RowSet 。
|
| Constructor and Description |
|---|
SyncProvider()
创建默认的
SyncProvider对象。
|
| Modifier and Type | Method and Description |
|---|---|
abstract int |
getDataSourceLock()
返回此
SyncProvider实现中当前的数据源锁严重级别。
|
abstract int |
getProviderGrade()
返回一个常量,表示一个
RowSet对象可以从此
SyncProvider对象预期的
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对象得到了它的数据。
|
public static final int GRADE_NONE
SyncProvider实现返回此等级将简单的写在更新RowSet对象的基础数据源不检查任何数据的有效性。
public static final int GRADE_CHECK_MODIFIED_AT_COMMIT
SyncProvider实现返回此等级将只检查已更改的行。
public static final int GRADE_CHECK_ALL_AT_COMMIT
SyncProvider实现返回此等级将检查所有的行,包括未更改的行。
public static final int GRADE_LOCK_WHEN_MODIFIED
SyncProvider实现返回此等级将在原始数据源锁定该行。
public static final int GRADE_LOCK_WHEN_LOADED
SyncProvider实现返回此等级将锁定受用于填充原来的语句整个视图和/或表RowSet对象。
public static final int DATASOURCE_NO_LOCK
SyncProvider实现的默认锁定设置,除非RowSet对象另有指示。
public static final int DATASOURCE_ROW_LOCK
SyncProvider对象的
RowSet对象的原始SQL语句所触及的行上。
public static final int DATASOURCE_TABLE_LOCK
SyncProvider对象的
RowSet对象的原始SQL语句所触及的所有表上都放置了一个锁。
public static final int DATASOURCE_DB_LOCK
SyncProvider对象的
RowSet对象的数据源的整个数据源上放置一个锁。
public static final int UPDATABLE_VIEW_SYNC
SyncProvider实现支持RowSet对象与用于填充对象的SQL
VIEW之间的
RowSet 。
public static final int NONUPDATABLE_VIEW_SYNC
SyncProvider实现
不支持之间的同步
RowSet对象和SQL
VIEW用来填充它。
public abstract String getProviderID()
SyncProvider对象的唯一标识符。
String对象具有此
SyncProvider对象的完全限定类名
public abstract RowSetReader getRowSetReader()
javax.sql.RowSetReader对象,可以用于使用数据填充
RowSet对象。
javax.sql.RowSetReader对象
public abstract RowSetWriter getRowSetWriter()
javax.sql.RowSetWriter对象,可用于将
RowSet对象的数据写回基础数据源。
javax.sql.RowSetWriter对象
public abstract int getProviderGrade()
RowSet对象可以从此
SyncProvider对象预期的
SyncProvider 。
public abstract void setDataSourceLock(int datasource_lock)
throws SyncProviderException
SyncProvider通过增加或减少其为成功同步提供的乐观程度来调整其行为。
datasource_lock - 以下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 - 如果确定数据源锁定级别发生错误。
setDataSourceLock(int)
public abstract int supportsUpdatableView()
SyncProvider实现可以一个之间执行同步
RowSet对象和SQL
VIEW在从该数据源
RowSet对象得到了它的数据。
int说这个SyncProvider对象是否支持更新SQL VIEW ;
以下之一:SyncProvider.UPDATABLE_VIEW_SYNC,SyncProvider.NONUPDATABLE_VIEW_SYNC
public abstract String getVersion()
SyncProvider实例的发行版本。
String详细说明的发行版本
SyncProvider实施
public abstract String getVendor()
SyncProvider实例的供应商名称
String详细说明了这个
SyncProvider实现的供应商名称
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.