EJB 2.x CMP エンティティー Bean の場合、リレーショナル・データベース表に衝突検出の列を追加することができます。
この衝突検出の列 は、レコードが更新されたかどうかを判別するために予約された追加のデータベース列です。
衝突検出の列を管理するには、独自のデータベース・トリガーの実装を準備する必要があります。
衝突検出の列の追加を選択すると、
オプティミスティック・アクセス・インテントの述部に属性を組み込む代替オプティミスティック並行性制御方式に比べて、次のような利点があります。
- 過剰修飾 UPDATE ステートメントでは、衝突検出の列と主キーだけが必須です。
この 2 つの列を検査する方式では、複数の選択されたオプティミスティック述部を使用する場合と比べて、入出力操作の数が少なくなります。
- 衝突検出の列を使用すると、
NULL 可能列へのマップまたは BLOB や
CLOB などサポートされないオプティミスティック並行性制御データ型へのマップができないというオプティミスティック述部の制限を克服することができます。
衝突検出の列の使用には、次のような制限があります。
- 衝突検出の列の値の変更または更新がサポートされません。
- 衝突検出の列の使用を選択した場合、衝突検出の列の使用はオプティミスティック・アクセス・インテントの述部に属性を組み込むオプティミスティック並行性制御方式に優先されます。
さらに、オプティミスティック・アクセス・インテントについて、すべてのオプティミスティック述部の設定が無視されます。
- 衝突検出の列の追加は、トップダウン・マッピングおよび Meet-in-the-Middle マッピングに使用することができます。
ボトムアップ・マッピング1 はサポートされません。
- "DISCRIM" または "OCC_" で始まる列名は、EJB マッピング・ツール用の予約名です。
- ストリング "DISCRIM" または "OCC_" のいずれかで始まる CMP フィールド名は指定しないでください。
- ストリング "DISCRIM" または "OCC_" のいずれかで始まる CMP に CMP を関連付けないでください。
衝突検出の列を追加するには、次のアプローチの 1 つを選択します。