2012年1月9日月曜日

S2Clickをさわってみた

年末にかけてS2Click(Apache Click + S2)を触ってみたので、ちょっとメモ。 こちらのページのサンプルをベースに簡単な一覧、登録、編集を実装してみました。 そのときの、感想や作業内容などを備忘録として書いておく。

DBアクセス部分の実装
DBアクセス部分はS2JDBC-Genを利用して、自動生成しました。
S2JDBC-Genを利用するとテーブル単位でS2JDBCで利用するためのエンティティとサービス層を自動生成してくれます。
S2JDBC-Genについてはこちら
S2JDBC-Genを解凍したフォルダの中の resource/s2jdbc-gen-build.xml を環境にあわせて書き替えてすぐに利用することができました。
画面遷移
また、Apache Click でフォームのアクションをPostBackで対応するメソッドを呼び出すイベント駆動方式になっている ため、Redirectもしくはサーブレットのforwardを利用しないと画面遷移を実装することはできません。
もちろん、自分でHTMLを書いた場合は、HTMLの<a>タグなどを利用した画面遷移は可能です。
こういった部分は、昔さわったASP.NETを彷彿とさせるな~と思いました。

登録、編集画面
入力系の画面は「入力 - 完了」というフローで実装するならApache Clickはフォームクラスから入力フォームを自動生成することができて、大変便利なのですが「入力 - 確認 - 完了」という間に確認画面を挟むフローで入力画面を実装しようとしると、確認画面を生成する機能がClickにないため、自分でHtmlを書かなければならず、途端にClickを使うメリットが半減するような気分になってしまいました。

またサンプルは ClickServlet に S2ClickServletTx を利用しているのですが、画面遷移をForward(setFowardメソッド)で実装すると、トランザクションエラーが発生してしまうため、txAttributeCustomizerを利用してService層に対して、トランザクションを適用する必要があります。
トランザクションの設定方法はこちらのページの「トランザクションの制御」の部分をご確認ください。

全体的な感想
Apache Click は
  • URL(HTMLの階層)とページクラスのパッケージ階層の自動対応
  • フォームクラスによるHTMLフォームの自動生成
  • フォーム内のアクションがメソッドに対応付けられるため、1フォーム内複数アクションがあるページの実装が簡単
  • コントローラ(サーブレット)部分の実装がシンプルでわかりやすい
といった部分は利点だなと思いました。
ただ、それだけにデータアクセス層でS2を利用しようとするとdiconファイルを色々つくらなければいけないので、S2に不慣れな自分としては途端に複雑になってしまう印象を受けました。特にS2がバージョンUPしてHOT DEPLOY に対応するようになってから、HOT Deploy に必要なファイルと実際の処理に必要な部分とのすみわけがわかりづらくて、余計に敷居を高く感じてしまいました。
ただ、S2Dao、S2JDBC以外のデータアクセス層のフレームワークはSQLを直接利用できかったりするので全然利用する気がしなかったりもするのですが・・・。
また、Apache Click自体にも
  • 確認画面の自動生成機能がない
  • 自動生成されるコンポーネントがPlayやDjangoのそれにくらべるとデザインがちょっとショボい
  • フォームコンポーネントの中にバリデーションを実装する方式になっているため、バリデーションを追加したい場合、自分でコンポーネントを拡張したクラスを作成しなければいけない(extras.controlがあるのである程度はそれでまかなえると思いますが・・・)。
なんて欠点もあります。
ただ、なんと言ってもソースがシンプルなので、自分でカスタマイズなどもしやすそうで、ついつい色々触ってみたくなるフレームワークでした。

0 件のコメント:

コメントを投稿