2011年11月2日水曜日

Seasar2入門の参考サイトとプロダクト選択のメモ

久しぶりにJava村に帰ってきた浦島さんの玉手箱メモ。


まずは概要を把握。



一口にSeasar2と言ってもたくさんプロダクトがあるので、Webアプリを作る場合にどのプロダクトを使うべきか調査。

  • MVCは、S2Struts or SAStruts or Teedaのどれがいい?
    • 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が最前線だなんて、奇遇と言うか、あるいは必然なのかな。

1 件のコメント:

師子乃 さんのコメント...

こんにちは。

どれがいいかということを調べるだけで、相当な手間がいりますね。

ブログ アーカイブ

tags