[Seasar-user:20448] ソース階層分けについて

Yuzuru Funakoshi [E-MAIL ADDRESS DELETED]
2010年 12月 20日 (月) 00:51:18 JST


はじめまして、boboと申します。

SAStrutsでプログラムを組ませて頂いてます。
素晴らしいF/Wで業界標準となる事を期待してます。

どこで質問してもなかなか正確な答えが得られず、ご助言頂ければ有難いのですが。
「ソースの階層分けについて」です。

SAStrutsの実務経験が無く、趣味でSNSサイト(http://fxstyle.dip.jp/sns-sample/)を 

SAStrutsを用いて構築させて頂きました。

構築していてどうしても分からない点が出てきました。
現在までのJavaのWEBアプリでの流れはどのプロジェクトでも機能の階層分けは
明確になっていると思います。

一般的・代表的なのはこのような感じでしょうか。
・UI(JSP,JavaScript,CSS)
・ActionForm
・Action層
・Service(ビジネスロジック層)
・Entity(Dataクラス層)
・DAO(DBインターフェース)

気になったのがService層です。SAStrutsの場合、DAOとServiceが合併して、
[1Serviceクラス=1テーブル]のように、Dortengのツールで自動生成されます。

ただ、そうなるとビジネスロジック層はどこにいくのかはっきりしません。
公式サイトにあるように開発者のひがさんはそれをService層で行いましょうと言う
コメントもありますが、本当はActionクラスも無くして画面から直接Service層に繋げ 

たいような事も読んだ記憶があります。

例えば、あるプログラムでユーザ削除と言うActionを実装しようとする時、
ユーザマスタ・組織マスタなど、複数テーブルの更新処理が必要となり、
それをビジネスロジックと呼んでいると思います。

[1Serviceクラス=1テーブル]となるとどうしても、他テーブルのトランザクションを 

他のテーブルのServiceに含めたくないと思ってしまいます。
私が古い技術者だからでしょうか、保守・運用も考えて可読性の高い今まで通りの
構造にしたく一階層増やしたいと思っています。

仕事でSAStruts案件に携われればこの辺もすっきりするのかもしれませんが、
どこに置いておけば良いのか分からず、共通的なDBが絡む処理はActionの
スーパークラスに全て置いてしまっています。

どなたかご助言いただけないでしょうか?
長文申し訳ありませんでした。。 



Seasar-user メーリングリストの案内