久しぶりに「DBFlute」でググってみたら、
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=47058&forum=12&0
という投稿が!
メンバーしか投稿できないみたいなのでとりあえずここで返答。
(見てもらえるかどうかわからないけど。。。)
(バージョンがわからないので的確かどうかわからないけど。。。)
> ****CB cb=new ****DB();
> cb.query().set.... //条件設定
> ****bhv.delegateDeleteList(****bhv.selectList(cb));
まずこれは、delegateDeleteList()ではなくbatchDelete(List)を
使うのが正しいです。delegateDeleteList()はprotectedの内部メソッドです。
> 問題はこのやり方は実はデータをselectして、一件づつ削除しているみたいです。
> パフォーマンスの問題あると思います。納得いかないです。
事前selectは必要ですが、PreparedStatementのバッチ更新を使っているので、
思っているほどパフォーマンスは悪くはないです。一回のステートメントで
一気に削除しに行きます。
> update 〜 set 〜 where 〜
> delete from 〜 where 〜 など
> 更新、削除のSQL文実行したい場合どうすればいいですか?
とはいえ、事前selectも入れずに更新や削除もしたいと思いますので、
以下のような方法で可能です。
MemberCB cb = new MemberCB();
cb.query().setMemberName_PrefixSearch("P");
memberBhv.queryDelete(cb);
これならば一回のSQLで条件にHITするレコード全て処理します。
同じような要領でqueryUpdate(Entity, CB)もあります。
http://d.hatena.ne.jp/jflute/20080701/1214911582
また、そういった機能を探したい時は、
「dbflute-basic-example」
https://www.seasar.org/svn/sandbox/dbflute/trunk/dbflute-basic-example/
をチェックアウトして、Example実装を見るのが一番です。
http://dbflute.sandbox.seasar.org/contents/introduction/tutorial4developer.html
の「Exampleのススメ」にて詳しく載っています。
#
# ちなみに「はてな」以外は目が行き届いていないのが現状です。。。
# (今回はたまたま発見)
#
【追記(2008/12/28)】
@ITのメンバーになって、返答させて頂きました。
(簡単にメンバーになれましたね)