ActionとServiceの責務

SAStruts+S2JDBCを使った開発では

という感じみたいですが、ちょっと悩みどころが。

よく1つのテーブルに対する処理に幾つかの関連するテーブルへの処理がぶら下がってること(簡単な例でいえば、「Aテーブルを更新するときに、Bテーブルも更新する」とか)があるんだけどその場合、一連の処理をServiceとして隠蔽してしまうのか、Actionで順次記述した方が良いのかが悩ましい。

昔のAction+DAO(例えば、Struts+JDBC)な構成だと、Actionにしか書くところがないのでActionに書くしかなかったし、Action+Service+DAO(例えば、Struts+Spring+Hibernate)な構成だと、Service(Logic作る人もいるけど)でロジック含めて隠蔽して、「ActionからはServiceのメソッド呼ぶだけで良いよ。」みたいな感じにしてることが多かった。

Action+Service+JdbcManagerの場合はどうすればいいんだろうね。

Serviceに隠蔽するとデータベースへのコードが集約されるのと不適切な方法でのアクセスをコントロールできそうなので、隠蔽するのもいいんだけどそうなるとServiceだけが責務が大きくなりすぎて痛し痒しなところが。

う〜ん悩ましいから、もう少しさわって。