- 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つのリファレンス実装(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.RIOptimisticProvider
SyncProvider
実装クラス名を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 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
オブジェクトとその移植に使用されたSQLVIEW
間の同期をサポートしないことを示します。static int
UPDATABLE_VIEW_SYNC
SyncProvider
実装がRowSet
オブジェクトとその移植に使用されたSQLVIEW
間の同期をサポートすることを示します。
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 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
オブジェクトがデータの取得先として使用するデータ・ソース内の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
-
-