DBFlute -- 0.6.0 その2 {DisplaySql}


MemberCB cb = new MemberCB();
cb.setupSelect_MemberStatus();
cb.query().setMemberAccount_LikeSearch("S", new LikeSearchOption().likePrefix().escapeByPipeLine());
cb.query().addOrderBy_MemberId_Desc();
System.out.println(cb.toDisplaySql());// ★

  ↓

select ... from MEMBER left outer join MEMBER_STATUS on ...
where MEMBER_ACCOUNT like 'S%' escape by '|'
order by MEMBER_ID desc;

DEBUGログで出力されているものと同じSQL文字列

DBFlute -- 0.6.0 その3 {OldSeasar}


Seasar-2.4.11/12/13でもS2Dao-1.0.47 + DBFlute-0.6.0が動作。

※ただし、DBFluteと関係のないS2Daoの機能で
 最新のSeasarに依存しているものは不可。

周辺フレームワークの都合でSeasar本体がバージョンアップできない場合に備えて、
古いSeasarでも最新のS2Daoが使えるようにしました。
S2Dao-1.0.47には魅力的な改善点が多いので(DBFluteも含めて)、
おすすめです。

DBFlute -- 0.6.0 その4 {スピード}


ConditionBeanのSelect句の解析や検索結果マッピング部分において、
パフォーマンスを改善しました。
今までSelect句だけはS2Daoに任せていたのですが、
それも自前でやることにより、より最適な処理が実現できました。
マッピングも一部オーバーライドして自前の最適処理を入れました。

具体的には:
1. Select句のIFコメント処理コストがなくなった
2. マッピング時に、setupSelectされたものだけを走査
3. マッピング時に、リフレクションを(極力)使わない

画面アプリではあまり実感ないと思われますが、
夜間バッチでの大量処理などにおいて効果を発揮します。

また、Seasarの機能である「SqlLogRegistry」を
DBFluteを利用する際においてデフォルトでOFFにしました。
現状デフォルトでは設定ONです。
かつ、本番運用時も動作するようになっているようなのですが、
利用しない人にとってはこれはパフォーマンス劣化の1要因です。
https://ml.seasar.org/archives/seasar-user/2007-August/010133.html

利用しない人の方が割合としては圧倒的に多いので、
「SqlLogRegistry」を利用したい人は自分で設定をONにするようにします。

※DBFluteBasicExampleにて明示的に設定をONにする実装例があります。
https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-basic-example
→ SqlLogRegistryTest