FORコメント (外だしSQLでループ)

@DBFlute-0.9.7.0, Java
以前から構想はありましたが、

http://d.hatena.ne.jp/taedium/20091114/p1

で、さらに触発されて、今回踏み切りました。
外だしSQLのパラメータコメントでループが書けます。
つまり、"FORコメント" です。

パラメータコメント - FORコメント

あまりDBFluteでは、フレームワーク間での2Way-SQLの
方言を作りたくなかったのですが、
(DBFluteは、基本的にS2Daoの仕様がベース)
さすがに、DOMAのリッチな構文はサポートできないので、
(本当に感心させられます、実現するの大変ですよ)
シンプルで定型的な要件にフィットさせながらも、ある程度の
自由度を提供する、という独自のバランスを考慮してみました。

ただ、DBFluteでは、実はFORコメントは実際には
そんなに利用される頻度は多くないと想定しています。
既に大勢の方に利用した頂いていて、あまり大きな問題に
なっていないことがよい証拠で(代替策もあったけど)、
DBFluteには、ConditionBeanがあるから。
とはいえ、FORコメントは大事な機能です。

コラム - FORコメントの存在価値
ちょうど、ConditionBean、外だしSQLの役割が着目
されたところで...DBFluteのポリシーを再確認。

DBFluteは、バランス重視のDBアクセスI/Fをポリシー
としていて、どちらか一辺倒ということはありません。

DBFluteの紹介 - 酸素と水、どっちが大事?

それどころか、サイトに載せない非公式な職人魂としては、
"外だしSQLだけのプロジェクトでも最高のもの"
という思いで作っています。
(少なくとも作り手の思いとしては)
もちろん、ConditionBeanとのバランスを考慮しての
ちょっとした独特のポリシーはありますが、

外だしSQLについて - 自由度の高さを重視

ConditionBeanは、外だしSQLがあるからこそ、
その堅さを有意義に利用できると言えるでしょう。
どっちが大事かなんて議論は無意味です。

FORコメントの実現まで漕ぎ着けたのも、
こういう思いがあったからかもですね。
(実は、内部的な実現方法をかなり悩んで、
挫折しそうになりました)

極めつけには、実はこういう事情があります。
jflute自身は、プロジェクトで外だしSQLの部分
ばかり担当することが多いのです。

anybody "jfluteさん、これお願いします"
jflute  "えっ、またぁ、こういうの持ってくるかい!?"

と、せっせとすんごい長いSQLとセンシティブな要件に
対応するパラメータコメントと格闘するわけです。
(かたわら、別の人にConditionBeanのフォローをして)
"超" 個人的にことを言えば、DBFluteの外だしSQLが
幸せでなければ、自分が幸せになれないのです!
そりゃ、(外だしSQLも)気合い入れて作るさぁ、ってとこで。

#
# ちなみに、DBFlute使って全部外だしSQLで実装した
# っていうプロジェクトの実績は聞いたことあります。
# (プロジェクトの規約でどうしてもってことで)
# とにかくSql2Entityが大活躍したそうで。
#