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社に登録したいベンダーは、[email protected]まで電子メールにてご連絡ください。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
実装のリリース・バージョンを示すString
public abstract String getVendor()
SyncProvider
インスタンスのベンダー名を返します。SyncProvider
実装のベンダー名を示すString
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.