連載
» 2003年09月27日 00時00分 公開

Eclipse徹底活用(5):Entity Beanを簡単に作る (2/3)

[金子崇之, 岡本隆史,NTTデータ]

(3)Entity Beanの作成

 今回はデータベースへのアクセスを行うために、Entity Beanを使用します。Entity BeanにはBMPとCMPがありますが、BMPは自らSQLを記述する必要があるため少々面倒です。今回は簡単に使用することのできる、CMPを使用します。

 以下の図にEntity Beanを生成するときの流れを示します。

EJB生成のフロー EJB生成のフロー

 それでは、Lombozを使用してEntity Beanを作成していきましょう。本稿では前回の記事で作成したj2eePrjを引き続き使用するため、DataSourceの設定から作業を行います。

DataSourceの設定

 mlEJB\META-INF\ejbGenerate.xmlを修正し、JBossのDataSourceの設定を記述します。PLEASE_MODIFY_THIS と記述されている部分を以下のように修正します。

<jboss
    version="3.0"
    unauthenticatedPrincipal="nobody"
    xmlencoding="UTF-8"
    destdir="${ejb.dd.dir}"
    validatexml="false"
    datasource="java:/MySqlDS"
    datasourcemapping="mySQL"
    preferredrelationmapping="foreign-key"
/>

EJBの生成

 ウィザードを使用してEntity Beanのクラスを生成します。パッケージ・エクスプローラービュー上でプロジェクトをクリックし、「ファイル」→「新規」→「Lomboz EJB Creation Wizard」で表示されるダイアログで、「ソース・フォルダ」、「パッケージ」、「名前」を入力し、「Select EJB Type」チェックボックスでEJBのタイプを選択します。今回は以下のように設定しました。

ソース・フォルダ j2eePrj/src
パッケージ ml
名前 MLMember
Select EJB Type Container Managed Entity Bean

 「次へ」をクリックすると、CMPの設定を行うダイアログが表示されます。今回は以下のように設定しました。

Schema name mlmember
Table name mlmember

 さらに、Persistent fieldsに以下を追加します。

email
Field email
Field type java.lang.String
Database column email
SQL type VARCHAR
name
Field name
Field type java.lang.String
Database column name
SQL type VARCHAR

 Fieldsリストからemailを選択し、「Make primary key」ボタンをクリックします。

ダイアログ

 「終了」ボタンをクリックすると、srcフォルダ配下にJavaファイルが生成されます。Javaファイル名は、先ほどのダイアログで指定した名前+Bean.javaとなります。

 今回生成されたMLMemberBean.javaファイルをエディタで開くと、クラスコメントのところが以下のようになっています。

/**
* @ejb.bean name="MLMember"
* jndi-name="MLMemberBean"
* type="CMP"
* primkey-field="email"
* schema="mlmember" 
* cmp-version="2.x"
* 
* @ejb.persistence 
* table-name="mlmember" 
* 
* @ejb.finder 
* query="SELECT OBJECT(a) FROM mlmember as a" 
* signature="java.util.Collection findAll()" 
* 
**/

 前回のStateless Session Beanのときに比べ、数多くのXDoclet用のタグ、パラメータが指定されています。これらのタグ、パラメータの意味については、XDocletのホームページ「Tag Reference for @ejb」や『現場に活かすJakarta Project「第3回 AntでEJB開発を効率化」』が詳しいので参照してください。

ソース編集

 ejbCreate、ejbPostCreateメソッドを修正し、このEntity Beanが生成されたときの初期化コードを記述します。TODO:で指定されている部分を修正します。今回はejbCreateメソッドに対し以下の修正を行います。

  • 引数にemail、nameを追加
  • 内部で、setEmail、setNameメソッドを呼び出す
/**
* The ejbCreate method.
* 
* @ejb.create-method 
*/
public java.lang.String ejbCreate(String email, String name) throws javax.ejb.CreateException {
    setEmail(email);
    setName(name);
    return null;
}

EJBクラス生成

 Stateless Session Beanのときと同様に、LombozからXDocletを使用し、EJBで必要となるファイルを1つのJavaファイルから自動生成します。

 まず、元となるJavaファイルをEJBモジュールに追加します。「MLMemberBean.java」を右クリック→「Lomboz J2EE...」→「Add EJB to module...」を選択します。表示されるダイアログで、「Ejb[mlEJB]」をチェックし、「OK」をクリックします。bean.xmlとejbs.xmlにMLMemberBeanが追加されます。

 続いて、EJBのファイルを生成します。「mlEJB」フォルダーを右クリック→「Lomboz J2EE...」→「Generate EJB Classes」を選択します。ejbsrcフォルダー配下に、以下のファイルが生成されます。

  • リモートインターフェイス
  • ホームインターフェイス
  • ローカルインターフェイス
  • ローカルホームインターフェイス
  • 実装クラス
  • データオブジェクトクラス
  • PKクラス
  • ユーティリティクラス

 また、mlEJB/META-INF配下には、各種サーバごとのデプロイメントディスクリプタが更新・生成されます。Stateless Session Beanの生成時には作成されなかった、CMP関連のディスクリプタも生成されます。

各種生成後のファイル状況

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。