|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Object javax.sql.rowset.spi.SyncProvider
public abstract class SyncProvider
未接続の RowSet
オブジェクトの読み取り/書き込み機能を提供する同期機構です。SyncProvider
実装は、SyncProvider
抽象クラスを拡張するクラスです。
SyncProvider
実装は、一意の ID (この実装の完全修飾クラス名) で識別されます。この名前を SyncFactory
SPI に登録して、すべての RowSet
実装で使用できるようにする必要があります。このリファレンス実装のファクトリ機構は、この名前を使って実装をインスタンス化します。これにより、RowSet
オブジェクトとそのリーダ (javax.sql.RowSetReader
オブジェクト) およびライター (javax.sql.RowSetWriter
オブジェクト) を提供できます。
JDBC RowSet
実装仕様では、SyncProvider
抽象クラスの 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
実装クラス名を Sun Microsystems, Inc. に登録したいベンダーは、jdbc@sun.com まで電子メールにてご連絡ください。Sun は、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
の更新を実行できるかどうかを示す定数
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 オブジェクトとその移植に使用された 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 オブジェクトを返します。 |
abstract RowSetWriter |
getRowSetWriter()
javax.sql.RowSetWriter オブジェクトを返します。 |
abstract String |
getVendor()
この SyncProvider インスタンスのベンダー名を返します。 |
abstract String |
getVersion()
この SyncProvider インスタンスのリリースバージョンを返します。 |
abstract void |
setDataSourceLock(int datasource_lock)
配下のデータソースに、datasource_lock で指定されたレベルのロックを設定します。 |
abstract int |
supportsUpdatableView()
この SyncProvider 実装が RowSet オブジェクトと、この RowSet オブジェクトがデータの取得先として使用するデータソース内の SQL VIEW の同期の実行が可能かどうかを返します。 |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
---|
public static int GRADE_NONE
SyncProvider
実装は、RowSet
オブジェクト内の更新内容を、データの妥当性検査を行わずに配下のデータソースへ書き込みます。
public static int GRADE_CHECK_MODIFIED_AT_COMMIT
SyncProvider
実装は、変更された行だけをチェックします。
public static int GRADE_CHECK_ALL_AT_COMMIT
SyncProvider
実装は、変更されていないものも含めてすべての行をチェックします。
public static int GRADE_LOCK_WHEN_MODIFIED
SyncProvider
実装は、元々のデータソース内の行をロックします。
public static int GRADE_LOCK_WHEN_LOADED
SyncProvider
実装は、RowSet
オブジェクトの移植に使用された元の文の影響を受けるビューおよびテーブル、またはそのいずれか全体をロックします。
public static int DATASOURCE_NO_LOCK
RowSet
オブジェクトの管理下にあるものを除くすべての SyncProvider
実装のデフォルトのロック設定です。
public static int DATASOURCE_ROW_LOCK
SyncProvider
オブジェクトを使用している RowSet
オブジェクトの移植に使用された元の SQL 文の影響を受ける行にロックが設定されることを示します。
public static int DATASOURCE_TABLE_LOCK
SyncProvider
オブジェクトを使用している RowSet
オブジェクトの移植に使用された元の SQL 文の影響を受けるすべてのテーブルにロックが設定されることを示します。
public static int DATASOURCE_DB_LOCK
SyncProvider
オブジェクトを使用している RowSet
オブジェクトのデータソースになっているデータ全体にロックが設定されることを示します。
public static int UPDATABLE_VIEW_SYNC
SyncProvider
実装が RowSet
オブジェクトとその移植に使用された SQL VIEW
間の同期をサポートすることを示します。
public static int NONUPDATABLE_VIEW_SYNC
SyncProvider
実装が RowSet
オブジェクトとその移植に使用された SQL VIEW
間の同期をサポートしないことを示します。
コンストラクタの詳細 |
---|
public SyncProvider()
SyncProvider
オブジェクトを作成します。
メソッドの詳細 |
---|
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
SyncProviderExceptiom
- データソースロックのレベルの決定時にエラーが発生した場合
SyncProviderException
setDataSourceLock(int)
public abstract int supportsUpdatableView()
SyncProvider
実装が RowSet
オブジェクトと、この RowSet
オブジェクトがデータの取得先として使用するデータソース内の SQL VIEW
の同期の実行が可能かどうかを返します。
SyncProvider
オブジェクトが SQL VIEW
の更新をサポートするかどうかを示す int
。SyncProvider.UPDATABLE_VIEW_SYNC または SyncProvider.NONUPDATABLE_VIEW_SYNCpublic abstract String getVersion()
SyncProvider
インスタンスのリリースバージョンを返します。
SyncProvider
実装のリリースバージョンを示す String
public abstract String getVendor()
SyncProvider
インスタンスのベンダー名を返します。
SyncProvider
実装のベンダー名を示す String
|
JavaTM 2 Platform Standard Ed. 5.0 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。