[jpa:86] Re: Seasar2 ”Easy Enterprise”の初心者向け資料はないでしょうか

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 10月 15日 (月) 00:00:29 JST


小林 (koichik) です.

Date:    Sun, 14 Oct 2007 23:35:29 +0900
From:    "Nobuaki Ito" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [jpa:85] Re: Seasar2 ”Easy Enterprise”の初心者向け資料はないでしょうか

> 小林さん、ありがとうございます。
> 記事の執筆者ご自身でいらっしゃいますよね!

はい,ご愛読ありがとうございます.m(__)m
# 10/27 発売 (?) の Java Expert #02 もよろしくです.

> 1)アプリケーション構造の基本形は、Super
> Agileと同じく、html画面があってPageクラスがあって、そのメソッド内から(S2Daoの代わりに)KuinaDaoを、(プレーンなentityのかわりに)JPA(EJB3)のEntityを利用するという理解でよろしいでしょうか?

それも可能です.

> 2)一方、"Kuina-Daoで楽々JPA"の第2章のサンプルは、EJB3セッションビーンを使っています。Pageクラスから直接Daoを呼ぶのと、こちらの方法との使い分けの指針はありますか?

アプリケーションの複雑さに依存という感じでしょうか.

画面から入力されたデータをほとんど手を加えることもなく
DB を更新したり,DB から取得したデータをほとんど
手を加えることもなく画面に表示したり,という場合は
Page クラスから直接 Dao を使っても構わないと思います.

一方,画面と DB との間でデータの加工や変換などの
処理がある程度あるなら,それらを Service クラスで
行うようにする方がいいと思います.
Service クラスは Session Bean として実装することが
できます.

この辺りのレイヤ構成については以下が良くまとまって
いるので参考にしてください.

http://d.hatena.ne.jp/szk-takanori/20070304/1173022251

他のクラスに委譲するだけのクラスを沢山作ったり,
一つのクラスが大きくなりすぎたりしないような
バランスの取れた構成を目指すのがいいと思います.

> 3)セッションビーンを使う場合、これをどのようにWeb層(Pageクラス?)から呼び出すべきでしょうか?
> 察するに、service / service.implパッケージ内にセッションビーンを作成しておけば、あとはPageクラス側でそのセッションビーンに対応する型の変数を宣言しておけば、規約に従い自動的にDIされて使えるということでしょうか。

はい.

> 4)セッションビーンを使う場合、PageクラスとDaoだけを使う場合と比較して、データアクセスと画面との間のデータのやりとりやマッピングが一段階増えると思います。(Pageクラス<--
> :この間に何か必要なはず!:-->セッションビーン<--: エンティティビーン:--> KuinaDao)
> ここはどう解決するのが良いのでしょう。EJBのパターンに基づきcommandパターンとDTOを自分で実装するということになりますか?

「何か必要なはず」というところで何をやりたいのか
見えないので何とも言いかねますが,「必要なはず」
と思っているだけで本当は必要ないようであれば
気にしなくても構わないように思います.
Session Bean と言っても Seasar2 でサポート
しているのはローカル呼び出しだけで単なる
POJO のようなものなので,Page クラスから
直接呼び出して構わないと思います.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



jpa メーリングリストの案内