モジュール java.sql.rowset
パッケージ javax.sql.rowset.spi

クラスSyncProvider

java.lang.Object
javax.sql.rowset.spi.SyncProvider

public abstract class SyncProvider extends Object
未接続のRowSetオブジェクトの読み取り/書込み機能を提供する同期メカニズムです。 SyncProvider実装は、SyncProvider abstractクラスを拡張するクラスです。

SyncProvider実装は、一意のID (この実装の完全指定クラス名)で識別されます。 この名前をSyncFactory SPIに登録して、すべてのRowSet実装で使用できるようにする必要があります。 このリファレンス実装のファクトリ・メカニズムは、この名前を使用して実装をインスタンス化します。これにより、RowSetオブジェクトとそのリーダー(javax.sql.RowSetReaderオブジェクト)およびライター(javax.sql.RowSetWriterオブジェクト)を提供できます。

JDBC RowSet実装仕様では、SyncProvider abstractクラスの2つのリファレンス実装(RIOptimisticProviderRIXMLProvider)を提供しています。 RIOptimisticProviderRowSetReaderオブジェクトと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.RIOptimisticProvider
 

ベンダーは、リファレンス実装同期プロバイダを参照して、新しい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オブジェクトは、SQL VIEWを基に作成されたSQLクエリーから移植可能です。 しかし、多くの場合、更新は配下のビューに対して実行されるので、追加として各種メタデータが必要になります。 SyncProviderクラスは、実装がSQL VIEWの更新をサポートするかどうかを示す2つの定数を提供します。
  • NONUPDATABLE_VIEW_SYNC - SyncProvider実装は、配下のRowSetオブジェクトのデータ・ソースとして、SQL VIEWとの同期をサポートしない。
  • UPDATABLE_VIEW_SYNC - SyncProvider実装は、配下のデータ・ソースとして、SQL VIEWとの同期をサポートする。

SQL VIEWのデータを移植された場合、デフォルトで、RowSetオブジェクトは更新不能になります。

5.0 SyncProvider定数

SyncProviderクラスは、SyncProviderメソッドの戻り値またはパラメータとして使用される3つの定数を提供します。 SyncProviderオブジェクトは、RowSetオブジェクトとその基礎となるデータ・ソースとの間で様々な注意を払って同期を実行するために実装できます。 最初の定数グループは、同期の処理方法を示します。 GRADE_NONEは、SyncProviderオブジェクトが有効なデータかを確認せず、単純にRowSetデータをデータ・ソースへ書き込むことを示します。 GRADE_MODIFIED_AT_COMMITは、プロバイダにより、変更されたデータのみを対象に妥当性検査が行われることを示します。 このほか、すべてのデータの妥当性検査を行うグレードや、データが変更またはロードされたときロックを適用するグレードがあります。
  1. 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
  2. データ・ソースに設定するロックを示す定数
    • SyncProvider.DATASOURCE_NO_LOCK
    • SyncProvider.DATASOURCE_ROW_LOCK
    • SyncProvider.DATASOURCE_TABLE_LOCK
    • SyncProvider.DATASOURCE_DB_LOCK
  3. SyncProviderオブジェクトがSQL VIEWの更新を実行できるかどうかを示す定数
    これらの定数については、セクション4.0を参照。
    • SyncProvider.UPDATABLE_VIEW_SYNC
    • SyncProvider.NONUPDATABLE_VIEW_SYNC
導入されたバージョン:
1.5
関連項目: