「登録・更新・削除が遅い。DBFluteは使えない」って言われて怒りそうになった(;^ω^)
まぁ僕も大人なので
①複数件の登録・更新・削除の場合はbatchInsert、batchUpdate、batchDeleteを使え
通常のデータを登録しようとし、
for (Bean bean : list) { Hoge hoge = new Hoge(); hoge.setId(bean.getId()); hoge.setNm(bean.getNm); hogeBhv.insert(hoge); }
とやるとローカルで100万件のデータに対して約60秒かかったΣ(´∀`;)
だがしかし
List<Hoge> hogeList = new ArrayList<>(); for (Bean bean : list) { Hoge hoge = new Hoge(); hoge.setId(bean.getId()); hoge.setNm(bean.getNm); hogeList.add(hoge); } hogeBhv.insert(hogeList);
でやると、1秒ぐらいかかった(;^ω^)
結果 → ソース改修
②排他制御をしないなら queryUpdate queryDelete を使え。
List<Hoge> hogeList = hogeBhv.selectList(cb); hogeBhv.batchDelete(hogeList);
ってあるだろ?これの処理を日本語にすると
1,検索条件からDBにSELECT文を投げる
2,SELECTの結果をEntityに詰める
3,ヒットしたデータの削除
つまり2回(以上?)DBに接続していることになる。
これをqueryDeleteに直すと
hogeBhv.queryDelete(cb);
この1行でおkなのだ(´・ω・`)
日本語に直すと
1、検索条件にヒットするデータをDELETEする
とDB接続回数も1回なのでこちらを使用しろよな( ゚д゚ )
つーか19歳の時からDBFlute使ってる俺に対してDBFluteの文句言うんじゃねーよばー(ry
0 件のコメント:
コメントを投稿