S2Strutsを使用した感想 †
【ビュー部分にMayaa、DBアクセスにS2Daoを利用】
・テンプレートエンジンにMayaaを利用。
・O/Rマッパに S2Daoを利用
別のエンジンを使用する事も(テンプレエンジン、O/Rマッパ共に)、JSPそのままで記述する事も可能だが、
どちらも使い勝手は結構よかった。
(Mayaaは慣れるまで少し時間がかかったが。。)
【 POJOでの記述が可能 】
Action、ActionFormをPOJOで記述する事ができ、モックの切り替えも容易となる。
但し、インターフェイス定義の増加、実装クラスをDIする為の設定が必要等のデメリットもある。
※私見だけど、インターフェイス定義=設計と考えれば、特に問題ないと思う。
それよりもPOJOにする事により単体テストが容易になる事や、モック利用のメリットも大きいと思う。
【 無設定S2Struts 】
S2Strutsを使用すると、規約に従ってstruts-configを自動的に補完できる。
アノテーションを使ってstruts-configを指定した内容で補完することも可能。
但し、strutsを動かす為の方法が、いくつも用意されているので、
プロジェクトで使用する場合は、ある程度のルール決めがないと
いろいろな設定が入り乱れて、かえって保守性が低下する危険もあると感じた。
【 トランザクション制御 】
基本的にはSearsar2がもつトランザクション制御機能を利用する。
具体的には、POJOに対してAspectでトランザクションの自動管理機能を組み込む形。
(EJBコンテナが提供するようなトランザクション管理機能をPOJOに対して透明に組み込むことができる。)
(http://s2container.seasar.org/2.4/ja/tx.html)
JTAと連動するコネクションプーリングを行う事も可能。(設定も非常に簡単!)
また、Seasar2のJTAとコネクションプールではなく、アプリサーバ(WebLogic、WebSphere、OracleAS、JBoss)の
JTAとコネクションプールを利用する事も可能らしい。(自身では未確認)
(http://s2container.seasar.org/2.4/ja/SabaJTAandDBCP.html)
複数のクラスでコネクションを持ちまわらなくても良くなるのでかなりソースもスッキリする。