Spring Roo始めました。…あれれ?

2014/02/03 6:19 PM

 

SpringBooks_IMG_8729

新規開発するWebアプリ案件でフレームワークの選択肢からSeasar2を外す決断をした。

そのきっかけになったのが、きしだのはてな 「Seasar2を新規案件に採用するのはそろそろやめたほうがいい」という記事だった。
Seasarコミュニティの衰退は、僕も既に感じていて、特に周辺のライブラリの更新が何年も全く止まったままになっていることが、気になっていたので、まさに背中を押された感じだ。

というのはいいのだけど、さて、何を使おうかと悩んだ。
自分としてはRuby on RailsやScalaも選択肢に入るのだが、共同開発をするメンバーのほとんどがJavaしか経験していない。また、官公庁納めの案件には実績のある言語が要求されることが多い。他の言語の学習から始めなくてはならないというのは、納期によっては辛いものがある。
となると、短期的にはJavaで書けるフレームワークを選ぶことになる。

Springか。


Spring Frameworkは、2005年ころから2007年ころまで、Struts・Hibernate・Velocityなどとともに使っていた。納めたシステムは今でも稼働している。僕はその後、設定ファイルの多さに辟易してSeasar2に行ったのだった。しかし、聞くところによると、Spring Rooは、簡単にアプリの立ち上げが可能だという。

では試してみよう。
導入には、掌田 津耶乃氏のSpring MVC/Rooプログラミング入門という本が役に立った。
全部で8章あり、第1章〜第2章がSpringの解説からSTSの導入まで、第3章〜第6章がSpring MVCとJPA、そして第7章がSpring Roo、第8章がTiles、テスト、認証の解説という構成である。
この本はリファレンス的に使うのではなく、ハンズオンで進めていくのが良い。
僕は、第6章までをざっくり読んで、第7章以降を重点的に実習した。第7章〜第8章は連続していて、Rooの基本的な使い方、レイアウト(Tiles)、テスト(Spring Test)、認証(Spring Security)と進んだ。
なんでEclipseベースのSTSでこんなにコマンドを打たなきゃいけないんだ、しかも書くところ多いし、Hot deployは無いし、とブツブツ言いながら、Seasar2に未練たっぷり。
しかしまあ、Seasar2の楽さには及ばないが、JavaのDI/AOPフレームワーク経験者にとっては敷居は低いだろうと思われる。

しかし、できあがったサンプルを見て戸惑った。

パッケージ構成があっさりしすぎている。
DAOやServiceやRepositoryが無く、DBへのアクセスメソッドを、Entityに書いているではないか!

いやいや、これは勘弁願いたい、扱うエンティティは山のようにあって、面倒なクエリもたくさんあるんだぞ、と思う一方、これが今のやり方なのか?これからはこうなのか?という疑問でいっぱいになった。

このまま進む訳にもいかず、Spring Rooのドキュメントや、1.2リリース当時の記事(Spring Roo 入門: 第 6 回: Spring Roo 1.2 を使って Spring MVC および GWT アプリケーションを開発し、Cloud Foundry にデプロイするSpring Roo 1.2 M1 – JPA リポジトリ,MongoDB,サービスレイヤを追加して Apache ライセンスでリリース)を読んでみた。すると、Rooのエンティティ作成機能にはActiveRecordの利用がデフォルトでONになっていて、その場合は、いわゆるDAOの機能がエンティティに含まれることになっているとのこと。公式ドキュメントには「DAOよさらば!」的なことも書いてあって、気になるのではあるが、その気持ち悪さが解消されなければActiveRecordを採用しなくてもいいんじゃないかと考えることにした。

実際に、ActiveRecordを使用しないでエンティティを作成し、RepositoryとServiceを構築するのは、次回に。
Spring3の総合的な理解を深めるために、 Spring3入門 ――Javaフレームワーク・より良い設計とアーキテクチャも購入した。早く進めよう。



コメントはまだありません

まだコメントはありません。

RSS feed for comments on this post. TrackBack URI

コメントを書く

WordPress Themes