「ロック」タブ

ディスクリプタのロック・ポリシーを指定するには、次のようにします。

1. ナビゲータでリレーショナル・ディスクリプタまたはEISルート・ディスクリプタを選択します。

   ディスクリプタに対する「ロック」アドバンスト・プロパティが表示されない場合、ディスクリプタを右クリックし、コンテキスト・メニューから「アドバンスト・プロパティの選択」→「ロック」を選択するか、「選択」メニューから「アドバンスト・プロパティの選択」→「ロック」を選択します。

2. 「ロック」タブをクリックします。

次の表を参照して、タブの次のフィールドにデータを入力します。次の表を参照して、該当するタイプのタブで、次のフィールドにデータを入力します。

フィールド | 説明
--- | ---
オプティミスティック・ロック | ディスクリプタでオプティミスティック・ロックを使用することを指定します。
バージョン | オプティミスティック・ロックを使用することを、バージョニングに基づいて指定します。
データベース・フィールド | オプティミスティック・ロックに使用するバージョンの値を含むデータベース・フィールドを選択します。 このフィールドは、リレーショナル・ディスクリプタの場合にのみ表示されます。
XPath | 「参照」をクリックしてバージョン値を格納する要素または属性へのパスを定義します。 このフィールドは、EISルート・ディスクリプタの場合にのみ表示されます。 属性のタイプが、選択したロック・ポリシーのタイプに対応していることを確認してください（「バージョンのロック」には`numeric`、「タイムスタンプ・ロック」には`timestamp`）。
バージョンのロック | ディスクリプタで数値バージョンのロックを使用することを指定します。バージョン・フィールド（リレーショナル・ディスクリプタの場合は「データベース・フィールド」で定義、EISルート・ディスクリプタの場合は「XPath」で定義）は`numeric`タイプにする必要があります。
タイムスタンプ・ロック | ディスクリプタで、タイムスタンプ・バージョンのロックをタイムスタンプに基づいて使用することを指定します。バージョン・フィールド（リレーショナル・ディスクリプタの場合は「データベース・フィールド」で定義、EISルート・ディスクリプタの場合は「XPath」で定義）は`timestamp`タイプにする必要があります。
キャッシュにバージョンを保存 | バージョン情報をキャッシュに保存するかどうか指定します。 バージョン・フィールドにマッピングを定義しないことを選択した場合、このオプションを有効にしてOracle TopLinkキャッシュにバージョン値を保存するようにディスクリプタを構成する必要があります。 バージョン・フィールドにマッピングを定義することを選択した場合、バージョン値がオブジェクトに保存されるように、このオプションを無効にする必要があります。 詳細は、「3層アプリケーションでのオプティミスティック・ロック」を参照してください。
フィールド脚注1 | オプティミスティック・ロックを使用することを、データベース・フィールドに基づいて選択ます。 このフィールドは、リレーショナル・ディスクリプタの場合にのみ表示されます。
すべてのフィールド | すべてのフィールドをオプティミスティック・ロックに使用することを選択します。
変更されたフィールド | 変更されたフィールドのみをオプティミスティック・ロックに使用することを選択します。
選択されたフィールド | 「追加」をクリックして、オプティミスティック・ロックに使用する特定のデータベース・フィールドを選択します。
ペシミスティック・ロック | ディスクリプタでペシミスティック・ロックを使用することを指定します。 EJB情報が構成されているディスクリプタ（「EJB情報を含むディスクリプタの構成」を参照）にのみ適用されます。
ロックを待機 | データソースのロックを待機するかどうかを指定します。選択しない場合、実行のスレッドでオブジェクトに対する読取りロックを取得できないと、`DatabaseException`がただちにスローされます。 選択した場合、実行のスレッドは読取りロックが解放されるまで待機し続け、解放されたときに取得を試みます。アプリケーションのデッドロックが発生する可能性があるため、このオプションは注意して使用してください。

脚注1`AttributeChangeTrackingPolicy`ではフィールドのロックを使用できません（「属性変更の追跡ポリシー」を参照）。

関連項目

  ロック・ポリシーの構成