手順 2 : VisitBean エンティティ Bean を作成する

この手順では、エンティティ Bean のソース コードを作成します。WebLogic Server のトピック (「アプリケーションによる EJB の使い方」) で説明されているように、エンティティ Bean は永続データの集合を表します。このアプリケーションの場合、そのデータはデータベースに格納されます。通常、データベースのデータを表すエンティティ Bean は、データベースの 1 つの行を表します。

また、エンティティ Bean はアプリケーションが対話する「もの」を表すと考えることもできます。このアプリケーションの場合、その「もの」は訪問です。

この節では、以下を実行します。

VisitBean のソース ファイルを作成する

ここでは、エンティティ Bean のコードを収めるパッケージとソース ファイルを作成します。

  1. [プロジェクト・エクスプローラ] で、VisitEJBProject を展開します。
  2. [src] を右クリックし、[新規パッケージ] を選択します。
  3. [新しい Java パッケージ] ダイアログの [名前] フィールドに hello と入力して [終了] をクリックします。
  4. [プロジェクト・エクスプローラ] で、作成した hello パッケージを右クリックし、[新規WebLogic エンティティ Bean] を選択します。
  5. [ファイル名] フィールドに、VisitBean と入力し、[終了] をクリックします。

生成されるソース コードには、@ 記号で始まるアノテーションがいくつか存在します。

これらのアノテーションは、コンパイル時に WebLogic Server EJBGen によって使用され、エンティティ Bean のリモート クラス、ホーム クラス、およびデプロイメント記述子が生成されます。エンティティ Bean の開発にはこれらのファイルがすべて必要ですが、アノテーションを追加することによって、これらのファイルを自分で作成する必要がなくなります (作成が必要なファイルは 1 つだけです)。

注意 : エンタープライズ JavaBean を構成するクラスとインタフェースについては、WebLogic Server ドキュメントの「EJB の構造と環境」を参照してください。その他の WebLogic 固有の情報については、「EJB のクラスとインタフェースを作成する」を参照してください。

Workshop のコードの中でアノテーションを使用すると、これらのタスクや他の開発タスクを効率的に自動化できます。VisitBean などのエンティティ Bean クラスに適用できるアノテーションと属性はたくさんあります。適用できるすべてのアノテーションを見るには、クラス宣言 VisitBean 内にカーソルを合わせ、[プロパティ] ビューを選択します。

ここに一覧表示されているアノテーションがこのクラスに適用されますが、そのほとんどはデフォルト値に設定されています。アノテーションまたは属性のデフォルト値を変更すると、それらはソース コードに書き込まれます。[プロパティ] ビューをスクロールすると、属性がデフォルト値に設定されているアノテーションを確認できます。次の図に示すように、それらのアノテーションは太字で表示されます。

デフォルト値のアノテーションは以下のとおりです。

注意 : 9.0 より前のプラットフォーム バージョンで EJBGen アノテーションを使用したことがあれば、構文が変更されたことに気づくはずです。バージョン 9.0 から、EJBGen は Java 5 アノテーションを使用します。これは、JSR 175 と「supported in JDK version 1.5」をベースにしています。

アノテーション値を設定するには

ここに示されているアノテーションは、開発作業の出発点となります。一部の値については、各自の EJB に合わせて編集する必要があります。アノテーション値の編集は、ソース コードで直接行うことも、[プロパティ] ビューで行うこともできます。このチュートリアルの手順では、通常 [プロパティ] ビューを使用してその操作を学んでいきますが、更新されたアノテーション コードも同時に示します。

  1. ソース コードで、カーソルを @Entity アノテーションに合わせます。

    [プロパティ] ビューには、この選択されたアノテーションの値が表示されます。

  2. [プロパティ] ビューで、Entity プロパティが展開されていることを確認し、tableName 属性を見つけます。
  3. tableName 属性の値を EJB_Visits に変更します。
  4. primKeyClass 属性を見つけます。この値を java.lang.String に変更します。

    この変更は、下で行うメソッドの変更のための準備です。更新されたアノテーション コードは次のように表示されます。

    @Entity(ejbName = "VisitBean", dataSourceName = "cgDataSource", tableName = "EJB_Visits", primKeyClass = "java.lang.String")

    生成されたソース コード内のエラーについては、気にする必要はありません。このエラーは、以下で修正されます。

エンティティ データ用の CMP フィールドを定義するには

ここでは、2 つのコンテナ管理による永続性 (CMP) フィールドを定義するコードを追加します。CMP フィールドは、このクラスの変数定義ではなく、データ ソース中のカラムによって表される仮想フィールドです。ここで追加するアクセサを使用することで、VisitBean は上の dataSourceName 属性で指定した cgDataSource からそのデータを取得します。このアノテーションの属性は、エンティティ Bean とデータ ソース行の対応の詳細を指定します。

  1. メソッド getKey() と setKey(String key) およびそれらに関連付けられているアノテーションとコメントをクラスから削除します。ejbPostCreate(Integer key) メソッドは削除しないでください
  2. 	/**
    	 * IMPORTANT: Automatically generated primary key field getter method. 
    	 * Please change name and class as appropriate. */
    	@CmpField(column = "key", primkeyField = Constants.Bool.TRUE)
    	@LocalMethod()
    	public abstract java.lang.Integer getKey();
    
    	/**
    	 * 重要 : 自動生成される主キー フィールド セッター メソッド。
    	 * Please change name and class as appropriate. */
    	@LocalMethod()
    	public abstract void setKey(java.lang.Integer key);
  3. 以下のメソッドを VisitBean クラスの本体に追加して、2 つのコンテナ管理による永続性 (CMP) フィールドを定義します。
        @CmpField(column = "visitorName", primkeyField = Constants.Bool.TRUE)
        @LocalMethod()
        public abstract java.lang.String getVisitorName();
        
        @LocalMethod()
        public abstract void setVisitorName(java.lang.String visitorName);
      	  
        @CmpField(column = "visitNumber")
        @LocalMethod()
        public abstract int getVisitNumber();
      
        @LocalMethod()
        public abstract void setVisitNumber(int number);

注意 : コードをソース ウィンドウにコピー アンド ペーストする場合、右クリック後に [ソース|フォーマット] を選択することによって Workshop でそのコードの書式を設定できます。

このコードには、以下のアノテーションが含まれています。

ejbCreate および ejbPostCreate メソッドを追加するには

ここでは、ejbCreate および ejbPostCreate メソッドを追加します。EJB は、コンテナの中で永続します。コンテナは、エンティティ Bean の作成や、それらとデータ ソースとの関連付けの管理を行うサーバ機能です。

EJB コンテナは、これらの新しいメソッドを使用して新しい VisitBean エンティティ Bean を作成します。このコンテナは、ejbCreate メソッドを呼び出してからこの Bean の状態をデータベースに書き込みます。このメソッドの実行の完了後、CMP フィールドに基づく新しいデータベース レコードが作成されます。この Bean がデータベースに書き込まれ、そのデータが EJB オブジェクトに割り当てられたら、コンテナは ejbPostCreate メソッドを呼び出します。

  1. ejbCreate メソッドの本体を次のように編集します。setKey(key) 行をメソッドから必ず削除してください。
  2. public String ejbCreate(String visitorName)
            throws CreateException{
        setVisitorName(visitorName);
        setVisitNumber(1);
        return null;
    }

    このメソッドは、新しい VisitBean を作成するために呼び出します。このメソッドを呼び出すと、訪問者の名前と訪問数が、VisitBean の値を格納するデータベースに追加されます。

  3. ejbCreate メソッドの下にある ejbPostCreate メソッドを次のように編集します。
    public void ejbPostCreate(String visitorName){}
  4. 〔Ctrl〕+〔Shift〕+〔S〕を押して作業を保存します。

これで、エンティティ Bean に必要なすべてのコードを記述しました。次の手順では、訪問を追跡するセッション Bean を作成します。

関連トピック

エンティティ Bean の開発

チュートリアルを移動するには、矢印をクリックしてください。


さらにヘルプが必要ですか。質問は Workshop ニュース グループまでお寄せください。