DBFlute-1.2.3 Released

DBFlute Runtime/Engineのリリース

DBFlute-1.2.3 です。

Change Log | DBFlute
(移行の注意点は特になし)

SchemaPolicy: $$first_columnName$$

SchemaPolicyScheckのユニーク制約名などで $$first_columnName$$ が使えるようになりました。

たとえば、MySQL だと単一カラムのユニーク制約名は「カラム名と同じ」になることが多いです。
(DDLのカラム定義のところでシンプルにUNIQUEと付ける形式の場合)

なので、以下のようなチェックができるようになりました。
「複合ユニーク制約なら UQ_[テーブル名]... で、単一ユニーク制約ならカラム名

then uniqueName is prefix:UQ_$$table$$ or $$first_columnName$$

厳密に、複合なのか単一なのかは区別してないですが、これで十分でしょう。

ファーストタッチペナルティ対策強化

// RDS ファーストタッチペナルティに関して
https://techblog.recochoku.jp/193

これは、Javaの中でもよくあります。
DBFluteも、最初は仕組み的に内部的な初期化が必要ですし、単にJavaの自動生成クラスの読み込みでファーストタッチペナルティも発生しやすいです。

そのためにDBFluteでは、Behavior に warmUpCommand() メソッドが用意されているのですが、ConditionQueryのクラスローディングまでは行われてなかったので、それも入れるようにしました。

実際の現場で試しても、結構効果があるということがわかり修正しました。

実際には、このメソッドを直接呼ぶというよりも、BehaviorSelector の initializeConditionBeanMetaData() メソッド経由で呼ぶという感じです。「アプリケーションの初期化終わり、かつ、まだリクエストを受け付けていない」タイミングで、その initialize メソッドを呼ぶと良いでしょう。

まとめ

これまた細かい修正ばかりですが...
現場からのフィードバックが頂けてるのはとても嬉しいことです(^^。