豆たちの饗宴

<< 戻る   トップ >>

Beginning Java EE6 を読み返したりして諸々の豆共 (beans) の役割を確認した。まず「バッキングビーン」だが、これは「マネージドビーン」と同じものだ。JSF ページの裏方を努め、この観点からはバッキングビーンになる。セッションビーンは EJB (エンタープライズ・ジャバ・ビーン)の1種類で、「ビジネスロジックをカプセル化」するという位置づけだ。

これにデータベースと接続するエンティティ・クラス (まれにエンティティ・ビーンと呼ばれることもあるようだ) を組み合わせてウェブアプリケーションを作っていくことになる。この間から何に引っかかっているかというと、セッションビーンとマネージドビーンの関係である。本当にこのような2種類の豆が必要なのか。

「永続性レイヤーは、ビジネスロジックの実行に適したレイヤーではありません。同様に、ユーザ・インターフェースでも、とくに複数のインターフェース(Web, Swing, ポータブルデバイスなど) があるときはビジネスロジックを実行すべきではありません。」("Beggining Java EE 6",A.Goncalbes,㈱プロシステム LOC訳,翔泳社 2012,P.193)。「すべきでない」ということは、単一のインターフェースの場合にはユーザ・インターフェース(の一部)であるマネージドビーンで実行してもかまわないということではないか。なお、この "Beggining Java EE6" の付録、"Java EE 6 ハンズオンラボ" ではセッションビーンにマネージドビーンの役割 (ウェブインターフェース) を兼ねさせている。

セッションビーンとマネージドビーンにはライフサイクルに違いがある。セッションビーンにはステートフル・ステートレス・シングルトンという3つのモデルがあるが、基本的に一度作ったインスタンスは「プール」に貯えられて、可能であれば再利用する。一方、マネージドビーンはウェブからのアクセス (セッションやリクエストなど) によって寿命が規定される(廃棄・生成が繰り返されるのか、初期化されて再利用されるのかかは現時点で不明)。このライフサイクルの違いが問題にならない場合、どちらかのライフサイクルに統合して「も」よいのであろう。

データベースのトランザクションを考慮するとセッションビーンが好ましく、セッションビーンでウェブインターフェースを兼ねることが難しければマネージドビーンを別途使用する、というのがモノグサなやり方になるか。鴨乃嘴南蛮の基本コンセプトは高度な技術の無駄使いだから、きちんとビジネス・レイヤー (セッションビーン) とプレゼンテーション・レイヤー (マネージドビーン) を分けていくとしよう。

最後に、バッキングビーンとエンティティクラスが同じもの云々という件だが、マネージドビーンとバッキングビーンが別物という勘違いに輪をかけて派生させた「あゝ勘違い」であった。


作成: 2014-06-02 20:55:04.0更新: 2014-06-02 20:55:04.0
http://museo-anonimo.jp/nanban/?id=1277,http://museo-anonimo.jp/nanban/tr/1277