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 メソッドを呼ぶと良いでしょう。
まとめ
これまた細かい修正ばかりですが...
現場からのフィードバックが頂けてるのはとても嬉しいことです(^^。