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つのリファレンス実装(RIOptimisticProviderとRIXMLProvider)を提供しています。 RIOptimisticProviderはRowSetReaderオブジェクトとRowSetWriterオブジェクトにより、すべてのRowSet実装を設定できます。 ただし、XmlReaderオブジェクトとXmlWriterオブジェクトを設定できるのは、RIXMLProvider実装だけです。 WebRowSetオブジェクトはXmlReaderオブジェクトを使用して、XML形式でデータを読み取り、データを自身に格納します。 また、XmlWriterオブジェクトを使用して、自身をXML形式でストリームまたはjava.io.Writerオブジェクトに自身を書き込みます。
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実装クラス名をOracle社に登録したいベンダーは、jdbc@sun.comまで電子メールにてご連絡ください。 Oracleは、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");
Javaプラットフォームでは、デフォルトで、RowSet同期プロバイダのリファレンス実装を常に使用できます。 その他のプラグイン可能な同期プロバイダが正常に登録されていない場合、SyncFactoryは自動的にデフォルトのSyncProviderリファレンス実装のインスタンスを生成します。 このため、上記のコードの抜粋では、SyncFactoryインスタンスにcom.fred.providers.HighAvailabilitySyncProviderという名前の実装が登録されていない場合、crsには、リファレンス実装内のデフォルトのプロバイダcom.sun.rowset.providers.RIOptimisticProviderが割り当てられます。
RowSetオブジェクトとデータ・ソース間の更新が元のクエリーまたは配下のデータ・ソースの制約に違反した場合、未接続のすべてのRowSet実装と指定されたSyncProvider実装の動作は予測不能になります。 このように、違反があったときの動作を定義しないことで、SyncProvider実装は、最善の対処方法を独自に決定することができます。
SyncProvider実装は、クエリー違反のサブセットを処理するハンドラを実装することができます。 しかし、SyncProvider実装で元のクエリー違反またはより一般的なデータ・ソース制約違反が処理されない場合、すべてのSyncProviderオブジェクトはSyncProviderExceptionをスローする必要があります。
RowSetオブジェクトは、SQL VIEWを基に作成されたSQLクエリーから移植可能です。 しかし、多くの場合、更新は配下のビューに対して実行されるので、追加として各種メタデータが必要になります。 SyncProviderクラスは、実装がSQL VIEWの更新をサポートするかどうかを示す2つの定数を提供します。
NONUPDATABLE_VIEW_SYNC - SyncProvider実装は、配下のRowSetオブジェクトのデータ・ソースとして、SQL VIEWとの同期をサポートしない。
UPDATABLE_VIEW_SYNC - SyncProvider実装は、配下のデータ・ソースとして、SQL VIEWとの同期をサポートする。
SQL VIEWのデータを移植された場合、デフォルトで、RowSetオブジェクトは更新不能になります。
SyncProvider定数SyncProviderクラスは、SyncProviderメソッドの戻り値またはパラメータとして使用される3つの定数を提供します。 SyncProviderオブジェクトを実装して、RowSetオブジェクトとその配下のデータ・ソースをさまざまなレベルで同期することができます。 最初の定数グループは、同期の処理方法を示します。 GRADE_NONEは、SyncProviderオブジェクトが有効なデータかを確認せず、単純にRowSetデータをデータ・ソースへ書き込むことを示します。 GRADE_MODIFIED_AT_COMMITは、プロバイダにより、変更されたデータのみを対象に妥当性検査が行われることを示します。 このほか、すべてのデータの妥当性検査を行うグレードや、データが変更またはロードされたときロックを適用するグレードがあります。
SyncProviderオブジェクトの同期のグレードを示す定数
SyncProviderオブジェクトがSQL VIEWの更新を実行できるかどうかを示す定数| 修飾子と型 | フィールド | 説明 |
|---|---|---|
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間の同期をサポートすることを示します。 |
| コンストラクタ | 説明 |
|---|---|
SyncProvider() |
デフォルトの
SyncProviderオブジェクトを作成します。 |
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
abstract int |
getDataSourceLock() |
この
SyncProvider実装内で現在使用されているデータ・ソース・ロックのレベルを返します。 |
abstract int |
getProviderGrade() |
この
SyncProviderオブジェクトがRowSetオブジェクトに提供できる同期のグレードを示す定数を返します。 |
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オブジェクトと、このRowSetオブジェクトがデータの取得先として使用するデータ・ソース内のSQL VIEWの同期の実行が可能かどうかを返します。 |
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
RowSetオブジェクトの管理下にあるものを除くすべてのSyncProvider実装のデフォルトのロック設定です。 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間の同期をサポートすることを示します。public static final int NONUPDATABLE_VIEW_SYNC
SyncProvider実装がRowSetオブジェクトとその移植に使用されたSQL VIEW間の同期をサポートしないことを示します。public abstract String getProviderID()
SyncProviderオブジェクトを表す一意の識別子を返します。SyncProviderオブジェクトの完全修飾クラス名を持つStringオブジェクト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()
SyncProviderオブジェクトがRowSetオブジェクトに提供できる同期のグレードを示す定数を返します。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 - データ・ソース・ロックのレベルの決定時にエラーが発生した場合。setDataSourceLock(int)public abstract int supportsUpdatableView()
SyncProvider実装がRowSetオブジェクトと、このRowSetオブジェクトがデータの取得先として使用するデータ・ソース内のSQL VIEWの同期の実行が可能かどうかを返します。SyncProviderオブジェクトがSQL VIEWの更新をサポートするかどうかを示すint。SyncProvider.UPDATABLE_VIEW_SYNC、SyncProvider.NONUPDATABLE_VIEW_SYNCのいずれかとなる。public abstract String getVersion()
SyncProviderインスタンスのリリース・バージョンを返します。SyncProvider実装のリリース・バージョンを示すStringpublic abstract String getVendor()
SyncProviderインスタンスのベンダー名を返します。SyncProvider実装のベンダー名を示すString バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。