CMP フィールドの追加または削除

コンテナー管理パーシスタンス (CMP) フィールド、または属性は、 コンテナーでパーシスタンス管理を処理しなければならない Bean クラスの変数を定義します。Java™ EE ツールを使用して、EJB デプロイメント記述子エディターで CMP フィールドを追加できます。

このタスクについて

最初に CMP エンティティー Bean を作成する際、Bean にパーシスタンス・フィールドもしくは属性を追加するオプションがあります。

ただし、後で CMP フィールドをエンティティー Bean に追加し、 場合によってはそれをキー・フィールドとして定義すると決めた場合は、 EJB デプロイメント記述子エディターを使用することができます。例えば、「Customer」という CMP エンティティー Bean を作成した後で、エンティティー Bean に、CMP フィールド「e-mail」を追加したい場合があります。 CMP フィールドを追加および削除するには、EJB デプロイメント記述子エディターの「Bean」ページを使用します。

注: 1 つ以上の CMP Bean 間に関係が存在する場合、1 つの CMP Bean のキーの形状を変更すると、関連した CMP Bean が再生成されます。

手順

  1. Java EE パースペクティブの「エンタープライズ・エクスプローラー」ビューで、EJB プロジェクトのデプロイメント記述子を右クリックし、「アプリケーションから開く」 > 「デプロイメント記述子エディター」を選択します。
  2. エディターの「Bean」ページで、作業する CMP エンティティー Bean を選択します。
  3. 「CMP フィールド」セクションの横の「追加」ボタンをクリックします。 「CMP フィールド」ダイアログ・ボックスが開き、現行の CMP フィールドがリストされます。
    注: エンタープライズ Bean がバイナリーの場合 (赤色)、その Bean に CMP フィールドを追加することは許可されません。
  4. 「追加」をクリックします。
  5. 「名前」フィールドに CMP フィールドの名前を指定します。 この場合、その CMP フィールド名はエンティティー Bean クラスで固有の名前でなければなりません。
  6. 「型」フィールドに、CMP フィールドの型を、型名を入力するか、ドロップダウン・リストから型を選択するかのいずれかによって指定します。 ドロップダウンには、Java プリミティブ型を含む、型のリストが含まれています。 「参照」をクリックして、 EJB プロジェクトのクラスパスに存在する他の型を選択することもできます。リスト内の型のクラス名を入力すると、完全修飾名が表示されます。
  7. CMP フィールドを 1 つに配列したい場合は、「配列」チェック・ボックスを選択して、配列のディメンション数を指定します。
  8. CMP フィールドをキー・フィールドとして定義するには、「キー・フィールド」チェック・ボックスを選択します。 このオプションは、子 Bean の場合は対象外です。 CMP Bean には、キー・フィールドは必須です。 CMP キー・フィールドが、Bean およびキー・クラスの両方に追加されます。 ホーム・インターフェースの create メソッドは、この新規タイプを組み込むように変更されます。
  9. EJB 1.1 Bean の場合、以下のオプションを使用できます。
    • CMP フィールドの値を検索および設定するメソッドを生成するには、 「getter および setter メソッドでアクセスする」チェック・ボックスを選択する。
    • これらの生成されたメソッドをリモート・インターフェースにプロモートしたい場合は、「getter および setter メソッドをリモート・インターフェースにプロモート」チェック・ボックスを選択する。「getter および setter メソッドでアクセスする」を選択する場合のみ、このオプションは使用可能です。
    • getter メソッドを読み取り専用に指定するには、 「読み取り専用にする」を選択する。 こうすると、WebSphere® Application Server コンテナーに、 getter メソッドが CMP エンティティー Bean の CMP フィールドをどれも更新しないことが通知されます。 このコンテナーは、getter メソッドが呼び出された後、Bean のデータをデータベースに書き戻さないので、 性能を改善することができます。 「getter および setter メソッドをリモート・インターフェースにプロモート」を選択する場合のみ、このオプションは使用可能です。
      ヒント: 「getter を読み取り専用にします」オプションを選択すると、ワークベンチは、新しく作成した CMP 属性の EJB 1.x 読み取りアクセス・インテントにエントリーを自動的に追加します。このエントリーは、EJB デプロイメント記述子エディターの「アクセス」ページで見つけることができます。詳しくは、「エンティティー 1.x のアクセス・インテント」セクションを参照してください。EJB 1.x 読み取りアクセス・インテントの変更について詳しくは、Entity 1.x Bean へのアクセス・インテントの追加 を参照してください。
  10. EJB 2.x Bean については、キー・フィールドを作成しない場合、以下のオプションを使用できます。
    • getter および setter メソッドをリモート・インターフェースにプロモートする
    • getter および setter メソッドをローカル・インターフェースにプロモートする
  11. 「適用」をクリックします。追加の CMP フィールドについてステップ 4 から 11 までを繰り返し、「閉じる」をクリックします。
  12. 「終了」をクリックします。 新しい CMP フィールドが Bean 定義に追加されます。

タスクの結果

注: CMP フィールドを削除するには、EJB デプロイメント記述子エディターの Bean ページで「削除」ボタンをクリックします。

フィードバック