「EJB 3.1 セッション Bean の作成」ウィザードを使用して EJB プロジェクトにセッション Bean と JPA エンティティーを作成することができます。
手順
- EJB プロジェクトを作成するステップに従って行います。「構成」フィールドの横の「変更」をクリックします。
- 「プロジェクト・ファセット」ページで「Java パーシスタンス」を選択し、「OK」をクリックします。
- EJB プロジェクトを作成するには、「JPA ファセット」ページで、以下のステップに従って行います。
- 「プラットフォーム」フィールドで、「RAD JPA プラットフォーム」を選択します。
- 「接続」フィールドで接続を選択するか、「接続の追加」をクリックして、接続を作成します。ステップに従って、選択したデータベース接続を作成します。
- 「接続からのデフォルト・スキーマのオーバーライド」を選択して、デフォルトのスキーマから使用しない場合は、「スキーマ」フィールドで別のスキーマを選択し、「終了」をクリックします。
- 以下のようにして、EJB プロジェクトにセッション Bean を作成します。
- Java™ EE パースペクティブで、
プロジェクトを右クリックし、を選択します。
「EJB 3.1 セッション Bean の作成」ウィザードが表示されます。
- 「ソース・フォルダー」フィールドで、新しい Bean 用のソース・フォルダーを選択します。
- 「Java パッケージ」フィールドに、新規 Bean のパッケージ名を入力します。
- 「Bean 名」フィールドに、エンタープライズ Bean に割り当てる名前を入力します。規則により、Bean 名は大文字で始めます。
注: Bean の名前にユニコード文字を使用できますが、ユニコード文字は、エンタープライズ Bean に関連付けられたエンタープライズ Bean のパッケージ、およびクラスではサポートされていません。
- リモート・インターフェースを追加する場合は「リモート」を選択し、ローカル・インターフェースを追加する場合は「ローカル」を選択します。その後、「終了」をクリックします。
- 以下のようにして、EJB プロジェクトに JPA エンティティーを作成します。
- EJB プロジェクトを右クリックし、を選択します。
- 「データベース接続」ページで、接続とスキーマが正しくなっていることを確認して、
「次へ」をクリックします。
- 「テーブルからエンティティーを生成」ページの「ソース・フォルダー」フィールドでソース・フォルダーの名前を入力するか、エンティティーの Java ソース・ファイルを置くフォルダーのパスを表示します。
- 「Java パッケージ」フィールドで、エンティティーの Java パッケージを入力するか、表示します。
- エンティティー・クラスを persistence.xml ファイルと同期させるには、「クラスを persistence.xml で同期化」を選択します。
- 「テーブル」フィールドで、エンティティーの作成元にするテーブル (複数可) を選択して、
「終了」をクリックします。
JPA エンティティー・クラスを表示した Java エディターが開きます。
- JPA エンティティー・クラスに照会を作成します。Java
エディターで JPA エンティティー・クラスを開くと、データベースからデータを検索する照会を作成できます。 エンティティー・クラスでの簡単な照会の例を 2 つ挙げます。
@Entity
@NamedQueries({
@NamedQuery(name = "findBySalaryLessThan", query = "SELECT e FROM Employee e WHERE e.salary < :salary"),
@NamedQuery(name = "findBySalaryGreaterThan", query = "SELECT e FROM Employee e WHERE e.salary > :salary")
})
- セッション Bean で、JPA エンティティーを使用します。ステートレス・セッション Bean で、EntityManager の注入を使用して、JPA エンティティーで作成した照会を実行することができます。Java エディターで
セッション Bean クラスを開いて、JPA エンティティーに接続する EntityManager を作成します。 前のステップで作成された照会を呼び出す例を以下に示します。
@Stateless
public class HumanResourcesBean implements HumanResources {
@PersistenceContext
private EntityManager emanager;
public HumanResourcesBean() {
}
public List<Employee> findBySalaryLessThan(double salary) {
Query query = emanager.createNamedQuery("findBySalaryLessThan");
query.setParameter("salary", BigDecimal.valueOf(salary));
@SuppressWarnings("unchecked")
List<Employee> result = query.getResultList();
return result;
}
public List<Employee> findBySalaryGreaterThan(double salary) {
Query query = emanager.createNamedQuery("findBySalaryGreaterThan");
query.setParameter("salary", BigDecimal.valueOf(salary));
@SuppressWarnings("unchecked")
List<Employee> result = query.getResultList();
return result;
}
}