S2JDBCは流れるようなSQLと言われているように、SQLをほとんど意識しなくてもある程度の処理はできてしまう。
更新・削除も可能なので、SQLを知らないプログラマでもメンテがしやすいという特性がある。(プログラマのくせにSQLも書けないのかというツッコミは置いといて)
どちらにせよSQLを外部ファイルにすることでプロジェクト内のファイルは増えてしまうし、DBの変更があったときは、ほぼほぼ書き換えなくてはならなくなる。そういったことを考慮すると開発のスピード感やDB変更への柔軟性はS2JDBCの方がメリットが大きい。
ただ、一つ文句を言わせてもらうと、group byがサポートされていのである。
これは結構衝撃であった。
まあ何でもかんでもSQLを書かずに済むとは思わないのだが集約はデータ取得の基本であるので少し残念だ。
わざわざ普通に取得してきたレコードを任意の単位でくるくる回しながら加工するのもあれなんで、当然外部SQLファイルにしましょうって話になります。(もちろんベタ書きでSQLを書いてもいいのだけれども保守性が悪くなっちゃいそうだし何となく生理的に受け付けない)
そこで議題に上がるのが 、どこまでをS2JDBCで実現して、どこからSQLで書きましょうといった切り分けの話しである。
SQLに慣れ親しんだ人からしてみれば「全部SQL書けばいいじゃん」って思うのかもしれないのだけれどもいかんせん先ほど述べたようなデメリットもあるし、普通にselectしてくるものまでわざわざsql書くのもseasar2を作ってくれたひがさんに申し訳ないかなという気もしてくる。
JOINとかは普通にS2JDBCで実現できるので、その切り分けは開発者の好みによりけりになってしまう。
僕的にはせっかくseasar2使ってるんだし、sql1書くのはgroup byとか(S2JDBCにとって)特別なことをするときだけにしようというふうに思いました。
そこらへんひがさんはどう思っているんだろう。
設計思想とか聞いてみたいものである。