DBFluteクライアントの直下にgenerate.batと並んで 「outside-sql-test.bat(.sh)」というバッチがあります。 これは 「外だしSQLを2WaySQLとして一括実行」 します。 つまり、外だしSQLの一括テストです。 落ちたSQLは、SQLの文法的にどこか間違っています。 普段、ディベロッパーがSQLを実装して確認するのにも 使うのも当然ですが、なんといってもDB構造が変わった ときに影響範囲を特定するのに役に立ちます(本当に役立ちます)。 後は、遅いSQLの発見にも役に立ちます。 実案件で実際に利用しています。 目立たない地味な機能ですが、もう手放せない機能ですね。 そういうこともあり、DBFluteには「プログラム上でSQLを埋め込む」 機能がありません。あくまでConditionBean or 外だしSQLの2つだけです。 「プログラム上でSQLを埋め込む」とこのように一括テストのような 形で検証することができません(つかまえることができない)。 ちょっとした短いSQLでもConditionBean以外のSQLは外だしSQLで 一括テストの管理内とするのがDBFluteのポリシーです。 「outside-sql-test.bat(.sh)」を実行して、コンソールのログを みて正常終了ならOK。何か落ちてたら例外が発生します。 コンソール(コマンドプロンプト)のウィンドウサイズやフォントサイズ を調整することをお奨めします。 (自分はMSゴシックの10くらいにして横幅3000くらいにしてます) コンソールでなくても、DBFluteクライアントのlog/dbflute.logに 実行結果が出力されているのでそこで確認することも可能です。 但し、ときどきテストで簡単に実行されると困るSQLがあります。 主にテストデータが大量に入ってる環境で、 「truncate table xxx」で消しちゃ困るとか 「夜間バッチ用のmerge文」とかで一回のSQLで実行時間に 30分掛かってしまう(正当な理由で遅い)とか、などです。 その場合は、テストは割り切って実行対象外にします。 SQLの方に -- #df:x# とコメント一行入れておくと、OutsideSqlTestの対象外になりあす。 ディベロッパーがこれを悪用して、2WaySQLをサボると大変なので、 ログの最後に何件対象外にしたか出るようにしています。 # 将来的には、EclipseのPlugin(EMecha)経由で実行して、 # 結果をもっと見やすい形で出せるようにしたいと考えています。 # SQLを書いたらショートカットキーですぐにその場で実行とか。 【追記】 Sql2Entityでも上記と似たようなメリットを得ることができますが、 Sql2EntityはSql2Entity対象のSQLしか実行しないので、 本当に全てのSQLを実行したいときはOutsideSqlTestとなります。