Happy New Year! DBFlute-0.9.7.8 was released. DBFlute Top Change Log Migration Point 二点ほど意識すべきポイントがあります。
(DBFLUTE-784)のバグに関して、以下の状況に当てはまる場合は、 本日リリースの 0.9.7.8 にアップグレードすることをお奨めします。 o 一つ前のバージョン、DBFlute-0.9.7.7 にて -> 0.9.7.6 以前では発生しない o 本番環境でもSQLログを出力している -> SQLログは通常 DEBUG レベルであるが、INFOに変更してるか、 もしくは、ピンポイントで明示的に出力しているような場合。 o バッチ更新で1万件などの大量データを扱っている -> 一時的なメモリ量が膨張するが残り(リーク)はしない ※不覚というところです。誠に申し訳ございません。 これに関連して、(DBFLUTE-786)を対応しました。 開発時のみのSQLログであれば、別にSQLログの出力コストで 処理が遅くなっても問題になりませんが、本番環境でもSQLログを 出力しているような場合に、例えば 10 万件のバッチ更新をすると、 Log4j へのSQLログの出力コストだけで結構時間を食います。 どうしてもSQLログを残されなければならないという規約がある のであれば仕方ないですが(その場合SQLログも業務処理と考えて)、 妥協ができるのであれば、先頭の100件だけをログ出力して後は省略。 いざってときのデバッグもそれだけで十分なことが多いですし、 どうしても必要ならアプリ側でトレースできるような工夫は幾らでも できます。それよりも、1分でも2分でも速い方がうれしいという ような場合に有効です。
(DBFLUTE-785)の改善に関して、必ず移行ポイントをご覧下さい。 そもそも全件削除を業務的に実行することは少ないと思われますが、 (するにしても truncate を使うことの方が多いと想定される) テストケースで利用しているということはあるかもしれません。
その他着目するところとしては二つ。 CheckInvalidQuery を TwoEdgedSword 機能から通常の機能へ昇格しました。 「あっ、ちょっとここは堅くしておこうかな」と思ったところで 使ってみて下さい。(1000万件のテーブルとかの検索などで) PK以外のカラム用のシーケンス取得メソッドも生成できる ようにしました。Entityへの自動設定はしないですが、 (自動設定するってことはそれってもう PK だよって感じで) 今までのようにわざわざ外だしSQLを書く必要もありません。 AutoIncrement - PK以外のカラムのシーケンス
# # to 一部の方 # 年賀状のリリース通知が 0.9.7.9 になってましたが、 # 0.9.7.8 の間違いです。。。 #