@DBFlute-0.9.5.2, DBFlute.NET-0.8.9.2 > (DBFLUTE-516){Java/C#}: > ConditionBeanでWhere句の有無判定メソッド 「ConditionBeanがWhere句を持っているかどうか」を 判定できるようにしました。
MemberCB cb = new MemberCB(); boolean hasWhereClause = cb.hasWhereClause();
InlineビューのWhere句は判断に含まれません。 ソート情報の有無はcb.hasOrderByClause()を使います。
何がうれしいかと言うと、 例えばテスト環境の時点でテーブルに1000万件のレコードが入ってて、 単体テストでも結合テストなどで、ちょっとしたバグでWhere句なしの SQLを発行してしまったら全然帰ってこなくて、デバッグに時間が掛かる、 別の人の作業を止めてしまう、という状況があるとします。 「このテーブルに対してWhere句なし検索はアプリコードでも テストコードでもありえない(やっちゃいけない)」 ということが分かりきっているのであれば、 ExtendedのBehaviorでselectList(cb)をオーバーライドして、 指定されたCBが「Where句がなかったら例外」にするなどして、 DBに負荷もかけず、バグを瞬時に例外として検知できるように することが可能です。 単体テストの環境で1000万件のレコードは想像しにくいですが、 パフォーマンスもテストしたいということで、結合テストなど で1000万件のレコードはありえると思います。 そのとき、万が一そういうバグがあった場合に、テスターも 非常に迷惑しますので、事前にチェックを掛けておくということです。
滅多に使わないとは思われますが、大人数での大規模開発で、 かつ、大容量のレコードを取り扱うアプリケーションの場合に アーキテクトが「なんかちょっと心配だなぁ」と思ったときに、 「このテーブルに対してWhere句なし検索はアプリコードでも テストコードでもありえない(やっちゃいけない)」 に対してチェックを掛けてみるって感じですね。 一応、こういうことができるっていう感じで覚えておくと良いです。