久しぶりにJava村に帰ってきた浦島さんの玉手箱メモ。
まずは概要を把握。
一口にSeasar2と言ってもたくさんプロダクトがあるので、Webアプリを作る場合にどのプロダクトを使うべきか調査。まずは概要を把握。
- Seasar2 入門
- Seasar2によるDI、AOP、その他についての分かりやすいシンプルな解説
- Java初心者が超俊敏にWebアプリを作る方法
- Seasar2のEclipseプラグインであるDoltengとSAStruts、S2JDBCについての解説
- Seasar2 - Seasar2
- 本家
- 初心者には見辛い
- MVCは、S2Struts or SAStruts or Teedaのどれがいい?
- S2StrutsかSAStrutsだとどっち?
- SAStrutsかS2Strutsか - ひがやすを blog
既にS2Strutsで開発している案件の追加開発ならS2Struts。
JDK1.4をつかうならS2Struts。
それ以外は、SAStruts。 - SAStrutsとTeedaでは?
- Teeda
- TeedaはJSFの実装
- Teeda Extensionを使えばHTMLをテンプレートにできる
- 「Seasarの問題点など」にそろそろ一言いっておくか - ひがやすを blog
ただ、無責任に何でも自由というのは良くないので、SAStrutsとS2JDBCの組み合わせが、もっとも無難だというメッセージを出しているわけです。
- SAStrutsとS2JDBCを作ったわけ - ひがやすを blog
TeedaとS2Daoは、基本的に規約ベースのフレームワークです。規約を知っていれば、本当にさくさく開発できます。でも、規約ベースなので、規約を知らないと、何にもできなくなっちゃう。この辺が、大規模開発には向かないところ。
SAStrutsとS2JDBCは、大規模案件にも耐えられるように最初から設計されています。
- 感想:チームでの開発や今後のメンテを考えると、参考情報も経験者も多いStrutsの名前を冠するSAStrutsに比べてTeedaは学習コストがかかりそう
- 結論:SAStrutsが無難
- S2JDBC or S2Daoのどっちを使う?
- HibernateとS2DaoとS2JDBCの考え方 - ひがやすを blogより引用
- S2Daoについて
S2DaoはSQLを中心に考えます。とはいえ、すべてのSQLを開発者が書くのは効率が悪いので、挿入、更新、削除は、S2DaoがSQLを自動生成しますが、検索は、開発者にSQLを書いてもらいます。
デメリットは、SQLを書くのが面倒なことです。また、検索の結果セットごとにDTOを作らなければいけないので、DTOが増える傾向があります。
Webのフレームワークとの組みあわせでいくと、Teeda Extensionは、S2Dao(DTO)と相性が良いように設計されているので、Teedaを使う場合は、S2Daoが良いと思います。
- S2JDBCについて
S2JDBCは、エンティティ(Java)とテーブル(データベース)は、同一のモデルだとみなしています。また、複雑なSQL以外は、すべて自動生成します。
デメリットは、エンティティの設計が、テーブルに引きずられ、完全にドメインをあらわしたものにならないこと。
- 感想
- S2DaoはINSERT/UPDATE/DELETEのSQL自動生成と、手作りしたSQLの実行をしてくれるみたい
- S2JDBCはDAOではなくApache CommonsのDbUtilsのようなSQLビルダー?
- 結論:TeedaでないならS2JDBCで
久しぶりにJavaの世界に帰ってきたら、昔使ってたStruts1.3(1.x系は1.3で止まってるとは意外)のラッパーであるSAStrutsと、同じく昔使ってたJakarta Commons(現在は昇格してApache Commons)のDbUtilsに似たS2JDBCが最前線だなんて、奇遇と言うか、あるいは必然なのかな。