今回はデータベースへのアクセスを行うために、Entity Beanを使用します。Entity BeanにはBMPとCMPがありますが、BMPは自らSQLを記述する必要があるため少々面倒です。今回は簡単に使用することのできる、CMPを使用します。
以下の図にEntity Beanを生成するときの流れを示します。
それでは、Lombozを使用してEntity Beanを作成していきましょう。本稿では前回の記事で作成したj2eePrjを引き続き使用するため、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"
/>
ウィザードを使用して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に以下を追加します。
| Field | |
|---|---|
| Field type | java.lang.String |
| Database column | |
| 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メソッドに対し以下の修正を行います。
/**
* 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;
}
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フォルダー配下に、以下のファイルが生成されます。
また、mlEJB/META-INF配下には、各種サーバごとのデプロイメントディスクリプタが更新・生成されます。Stateless Session Beanの生成時には作成されなかった、CMP関連のディスクリプタも生成されます。
Copyright © ITmedia, Inc. All Rights Reserved.