DBFlute: Behaviorで外だしSQL(OutsideSql)


Behaviorで外だしSQL(OutsideSql)が可能になりました。

これはどういうことかを説明します。
今まではS2Daoを意識してDaoインターフェースに外だしSQL用のメソッドを実装していました。
ほとんどDBFluteではお世話していなかったため、実現が非常に楽ではあったのですが、
しかしそれは同時に、S2Daoの外だしSQLの仕様に縛られてもいました。
具体的には、以下のようなデメリットがありました。

A. ファイルの置き場所、ファイル名に自由度がない
B. 外だしSQLファイルの再利用ができない
C. 外だしSQLだけDaoを意識しなければならない
(本来は、「Behaviorだけ知っていれば」という風にしたい)

「A」は、プロジェクト構成において不自由に感じることがあったでしょう。
「B」は、具体的にはページング検索時です。
ページングでは「ページングなし件数検索」と「ページング実データ検索」の2つが必要になりますが、
その2つはほとんど似たSQLになります。しかし、今まではこのときに2つSQLを用意しなければなりませんでした。
すると、Where句などのロジックが2箇所に広がってしまうため、片方だけ直してズレてしまうバグを
誘発しやすいものでした。
「C」は、概念的なものですが、初心者に理解してもらうためには、「とにかくBehaviorからDBアクセスする」と
説明するのが一番楽でわかりやすいのですが、今までは「外だしSQLだけはDaoというものを...それはS2Daoという...」
という説明をしなければなりませんでした。S2Daoを知っている開発者なら問題ないですが、
実際プロジェクトに配置される開発者(協力会社の方も含めて)はS2Daoを知っている人はあまり多くありません。

今回、これらデメリットを全て解消する、機能として「OutsideSql」を実装しました。
基本ドキュメントが以下となります。

http://dbflute.sandbox.seasar.org/contents/outside-sql/howto.html

また、Exampleにてこの「OutsideSql」を実装したテストケースがあります。
こちらを参考にしてみて下さい。(お試し実装することも可能です)

【ExampleのSVN
https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-basic-example