ひこぽんのーと

覚書と雑記です。

JavaEE 7をやってみよう。 JPA その6

その5のつづき。

動作確認のためのEJB作りとなる。
WebアプリでなくてもJPAは使えるらしいけど、
せっかくJavaEEをやってるのだから、EJBを使っておこう、
というノリにしておこう。

EJBプロジェクトは、平たく言うとビジネスロジックを記述する層という認識で、
今回のようにDB参照して一覧取得を行う、とか、入力内容をDBに格納する、とか、
そのような処理をまとめとく印象。

EJBクラスの種類には大きくセッションBeanとメッセージBeanってのがあるらしく、
違いとしては前者はセッション同期、後者は非同期ってな感じらしい。
詳しくはOracleのサイトを見ると良いのかも。

blogs.oracle.com

というわけで、
先に作ったJPAプロジェクトのエンティティクラスを用いてDB参照を行うビジネスロジック
EJBで作ってみる。

1. セッションBean作成
新規から「その他」を選び、
ウィザードから「EJB」→「セッションBean (EJB 3.x)」を選ぶ。
f:id:nagamitsu1976:20151002152321p:plain
2. Bean本体とインターフェースの作成
パッケージ名とクラス名を入力する。EJBを呼び出す側が使用するインターフェースが必要なのでビジネスインターフェースの作成も有効にする。
リモートとローカルがあるのだが、とりあえず、ローカルのみとする。*1f:id:nagamitsu1976:20151002155848p:plain
f:id:nagamitsu1976:20151002160436p:plain
3. 完了
完了ボタンを押すとクラスとインターフェースが自動生成される。
f:id:nagamitsu1976:20151002160543p:plain
4. メソッド追加
コンストラクタ以外にメソッド一つもないので、
ここに機能としてWarshipテーブルから全レコード取得するメソッド定義する。
ローカルインタフェースを開いてメソッドを追加する。
f:id:nagamitsu1976:20151002161114p:plain
5. メソッド実装
インターフェースに追加したメソッドを実装する。
Eclipseではエラーから簡単にスタブが実装できるので楽だね。
f:id:nagamitsu1976:20151002162424p:plain

といった具合に外枠だけは埋まった。
あとはDB参照を実装すればOK。

エンティティ呼び出しの実装は次回に続く。

*1:アプリケーションサーバで稼働する場合はローカル、別アプリケーションサーバで稼働しているモジュールを呼ぶ場合はリモートとなるらしい。参照:ローカルインタフェースとリモートインタフェースの使用