- java.lang.Object
-
- javax.sql.rowset.spi.SyncProvider
-
public abstract class SyncProvider extends Object
未接続のRowSetオブジェクトの読み取り/書込み機能を提供する同期メカニズムです。SyncProvider実装は、SyncProviderabstractクラスを拡張するクラスです。SyncProvider実装は、一意のID (この実装の完全指定クラス名)で識別されます。 この名前をSyncFactorySPIに登録して、すべてのRowSet実装で使用できるようにする必要があります。 このリファレンス実装のファクトリ・メカニズムは、この名前を使用して実装をインスタンス化します。これにより、RowSetオブジェクトとそのリーダー(javax.sql.RowSetReaderオブジェクト)およびライター(javax.sql.RowSetWriterオブジェクト)を提供できます。JDBC
RowSet実装仕様では、SyncProviderabstractクラスの2つのリファレンス実装(RIOptimisticProviderとRIXMLProvider)を提供しています。RIOptimisticProviderはRowSetReaderオブジェクトとRowSetWriterオブジェクトにより、すべてのRowSet実装を設定できます。 ただし、XmlReaderオブジェクトとXmlWriterオブジェクトを設定できるのは、RIXMLProvider実装だけです。WebRowSetオブジェクトはXmlReaderオブジェクトを使用して、XML形式でデータを読み取り、データを自身に格納します。 また、XmlWriterオブジェクトを使用して、自身をXML形式でストリームまたはjava.io.Writerオブジェクトに自身を書き込みます。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.RIOptimisticProviderSyncProvider実装クラス名をOracle社に登録したいベンダーは、jdbc@sun.comまで電子メールにてご連絡ください。 Oracleは、RowSet準拠実装で使用できるSyncProvider実装の一覧をデータベースで管理しています。 このデータベースは、使用可能な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");
Javaプラットフォームでは、デフォルトで、
RowSet同期プロバイダのリファレンス実装を常に使用できます。 その他のプラグイン可能な同期プロバイダが正常に登録されていない場合、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オブジェクトは、SQLVIEWを基に作成されたSQLクエリーから移植可能です。 しかし、多くの場合、更新は配下のビューに対して実行されるので、追加として各種メタデータが必要になります。SyncProviderクラスは、実装がSQLVIEWの更新をサポートするかどうかを示す2つの定数を提供します。NONUPDATABLE_VIEW_SYNC-SyncProvider実装は、配下のRowSetオブジェクトのデータ・ソースとして、SQLVIEWとの同期をサポートしない。UPDATABLE_VIEW_SYNC-SyncProvider実装は、配下のデータ・ソースとして、SQLVIEWとの同期をサポートする。
SQL
VIEWのデータを移植された場合、デフォルトで、RowSetオブジェクトは更新不能になります。5.0
SyncProvider定数SyncProviderクラスは、SyncProviderメソッドの戻り値またはパラメータとして使用される3つの定数を提供します。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
- 関連項目:
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_SYNCSyncProvider実装がRowSetオブジェクトとその移植に使用されたSQLVIEW間の同期をサポートしないことを示します。static intUPDATABLE_VIEW_SYNCSyncProvider実装がRowSetオブジェクトとその移植に使用されたSQLVIEW間の同期をサポートすることを示します。
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 SyncProvider()デフォルトのSyncProviderオブジェクトを作成します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 抽象メソッド 修飾子と型 メソッド 説明 abstract intgetDataSourceLock()このSyncProvider実装内で現在使用されているデータ・ソース・ロックのレベルを返します。abstract intgetProviderGrade()このSyncProviderオブジェクトがRowSetオブジェクトに提供できる同期のグレードを示す定数を返します。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
もともとのデータ・ソース上にロックが保持されないことを示します。RowSetオブジェクトの管理下にあるものを除くすべてのSyncProvider実装のデフォルトのロック設定です。- 関連項目:
- 定数フィールド値
-
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オブジェクトを表す一意の識別子を返します。- 戻り値:
- この
SyncProviderオブジェクトの完全修飾クラス名を持つStringオブジェクト
-
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()
このSyncProviderオブジェクトがRowSetオブジェクトに提供できる同期のグレードを示す定数を返します。- 戻り値:
- 次の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の同期の実行が可能かどうかを返します。- 戻り値:
- この
SyncProviderオブジェクトがSQLVIEWの更新をサポートするかどうかを示すint。SyncProvider.UPDATABLE_VIEW_SYNC、SyncProvider.NONUPDATABLE_VIEW_SYNCのいずれかとなる。
-
getVersion
public abstract String getVersion()
このSyncProviderインスタンスのリリース・バージョンを返します。- 戻り値:
SyncProvider実装のリリース・バージョンを示すString
-
getVendor
public abstract String getVendor()
このSyncProviderインスタンスのベンダー名を返します。- 戻り値:
SyncProvider実装のベンダー名を示すString
-
-