- java.lang.Object
-
- javax.sql.rowset.spi.SyncProvider
-
public abstract class SyncProvider extends Object
同步机制,为断开连接的RowSet对象提供读取器/写入器功能。SyncProvider实现是扩展SyncProvider抽象类的类。SyncProvider实现由唯一ID标识,该ID是其完全限定的类名。 此名称必须在SyncFactorySPI中注册,从而使实现可用于所有RowSet实现。 引用实现中的工厂机制使用此名称来实例化实现,然后可以提供RowSet对象及其读取器(javax.sql.RowSetReader对象)及其javax.sql.RowSetReader器(javax.sql.RowSetWriter对象)。Jdbc
RowSet实现规范提供了SyncProvider抽象类的两个参考实现:RIOptimisticProvider和RIXMLProvider。RIOptimisticProvider可以使用RowSetReader对象和RowSetWriter对象设置任何RowSet实现。 但是,只有RIXMLProvider实现可以设置XmlReader对象和XmlWriter对象。WebRowSet对象使用XmlReader对象以XML格式读取数据以使用该数据填充自身。 它使用XmlWriter对象将自身写入XML格式的流或java.io.Writer对象。1.0实施命名公约
作为命名SyncProvider实现的指南,应注意以下内容:-
SyncProvider实现的名称是其完全限定的类名。 - 建议供应商在名为
providers的软件包中提供SyncProvider实现。
例如,如果名为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实现一起使用。 此数据库将类似于已列出的列出可用JDBC驱动程序的数据库。供应商应参考参考实现同步提供程序,以获取有关如何实现新
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参考实现的实例。 因此,在前面的代码片段中,如果没有向SyncFactory实例注册名为com.fred.providers.HighAvailabilitySyncProvider实现,则将在引用实现中为crs分配默认提供程序,即com.sun.rowset.providers.RIOptimisticProvider。3.0违规和同步问题
如果断开连接的RowSet对象与数据源之间的更新违反了原始查询或基础数据源约束,则会导致所有已断开连接的RowSet实现及其指定的SyncProvider实现的未定义行为。 如果发生此类违规行为时未定义行为,SyncProvider为SyncProvider实施提供更大的灵活性,以确定其自身的最佳操作方案。SyncProvider实现可以选择实现特定处理程序来处理查询违规的子集。 但是,如果SyncProvider实现未处理原始查询冲突或更一般的数据源约束冲突,则所有SyncProvider对象都必须抛出SyncProviderException。4.0可更新的SQL VIEW
这是可能的任何断开或连接RowSet对象从每个从SQL最初制定了一个SQL查询来填充VIEW。 虽然在许多情况下可以对底层视图执行更新,但是这种更新需要额外的元数据,这可能会有所不同。SyncProvider类提供了两个常量来指示实现是否支持更新SQLVIEW。-
NONUPDATABLE_VIEW_SYNC- 表示SyncProvider实现不支持与SQLVIEW同步,作为RowSet对象的基础数据源。 -
UPDATABLE_VIEW_SYNC- 表示SyncProvider实现支持与SQLVIEW同步作为基础数据源。
如果
RowSet对象是使用SQLVIEW数据填充的,则默认值是不可更新的。5.0
SyncProvider常数SyncProvider类提供了三组常量,用作SyncProvider方法的返回值或参数。SyncProvider对象可以被实现为一个之间执行同步RowSet对象并伴有不同程度的护理其底层数据源。 第一组常量表示如何处理同步。 例如,GRADE_NONE表示SyncProvider对象不会SyncProvider查看哪些数据有效,只是将RowSet数据写入数据源。GRADE_MODIFIED_AT_COMMIT表示提供程序仅检查已修改数据的有效性。 其他等级检查所有数据的有效性或在修改或加载数据时设置锁定。- 用于指示
SyncProvider对象的同步等级的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执行更新的VIEW
这些常量在前一节(4.0)中进行了解释。- SyncProvider.UPDATABLE_VIEW_SYNC
- SyncProvider.NONUPDATABLE_VIEW_SYNC
- 从以下版本开始:
- 1.5
- 另请参见:
-
SyncFactory,SyncFactoryException
-
-
-
字段汇总
字段 变量和类型 字段 描述 static intDATASOURCE_DB_LOCK表示锁定在整个数据源上,该数据源是使用此SyncProvider对象的RowSet对象的数据源。static intDATASOURCE_NO_LOCK表示原始数据源上没有锁定。static intDATASOURCE_ROW_LOCK指示对用于填充正在使用此SyncProvider对象的RowSet对象的原始SQL语句所触及的行的锁定。static intDATASOURCE_TABLE_LOCK指示对用于填充使用此SyncProvider对象的RowSet对象的原始SQL语句所触及的所有表的锁定。static intGRADE_CHECK_ALL_AT_COMMIT表示与原始数据源相关的高级乐观同步等级。static intGRADE_CHECK_MODIFIED_AT_COMMIT表示与原始数据源相关的低级别乐观同步等级。static intGRADE_LOCK_WHEN_LOADED表示与原始数据源相关的最悲观同步等级。static intGRADE_LOCK_WHEN_MODIFIED表示与原始数据源相关的悲观同步等级。static intGRADE_NONE表示未提供与原始数据源的同步。static intNONUPDATABLE_VIEW_SYNC表明SyncProvider实现 不支持之间的同步RowSet对象和SQLVIEW用来填充它。static intUPDATABLE_VIEW_SYNC表示SyncProvider实现支持RowSet对象与用于填充它的SQLVIEW之间的同步。
-
构造方法摘要
构造方法 构造器 描述 SyncProvider()创建默认的SyncProvider对象。
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 abstract intgetDataSourceLock()返回此SyncProvider实现中处于活动状态的当前数据源锁定严重性级别。abstract intgetProviderGrade()返回一个常量,指示RowSet对象可以从此SyncProvider对象获得的同步等级。abstract StringgetProviderID()返回此SyncProvider对象的唯一标识符。abstract RowSetReadergetRowSetReader()返回javax.sql.RowSetReader对象,该对象可用于使用数据填充RowSet对象。abstract RowSetWritergetRowSetWriter()返回一个javax.sql.RowSetWriter对象,该对象可用于将RowSet对象的数据写回基础数据源。abstract StringgetVendor()返回此SyncProvider实例的供应商名称abstract StringgetVersion()返回此SyncProvider实例的发行版本。abstract voidsetDataSourceLock(int datasource_lock)在 datasource_lock指示的级别设置对基础数据源的锁定。abstract intsupportsUpdatableView()返回此SyncProvider实现是否可以在RowSet对象与RowSet对象从中获取其数据的数据源中的SQLVIEW之间执行同步。
-
-
-
字段详细信息
-
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
指示对用于填充使用此SyncProvider对象的RowSet对象的原始SQL语句所触及的行的锁定。- 另请参见:
- 常数字段值
-
DATASOURCE_TABLE_LOCK
public static final int DATASOURCE_TABLE_LOCK
指示对用于填充使用此SyncProvider对象的RowSet对象的原始SQL语句所触及的所有表的锁定。- 另请参见:
- 常数字段值
-
DATASOURCE_DB_LOCK
public static final int DATASOURCE_DB_LOCK
表示锁定在整个数据源上,该数据源是使用此SyncProvider对象的RowSet对象的数据源。- 另请参见:
- 常数字段值
-
UPDATABLE_VIEW_SYNC
public static final int UPDATABLE_VIEW_SYNC
表示SyncProvider实现支持RowSet对象与用于填充它的SQLVIEW之间的同步。- 另请参见:
- 常数字段值
-
NONUPDATABLE_VIEW_SYNC
public static final int NONUPDATABLE_VIEW_SYNC
表明SyncProvider实现 不支持之间的同步RowSet对象和SQLVIEW用来填充它。- 另请参见:
- 常数字段值
-
-
方法详细信息
-
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在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对象与RowSet对象从中获取其数据的数据源中的SQLVIEW之间执行同步。- 结果
-
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实现的供应商名称
-
-