移行 0.9.3 to 0.9.4
お約束の注意点
- 古いバージョンの削除
- 古いバージョンのDBFluteランタイム(JAR)が[web-INF/lib]の下などに残らないように
- タスクを実行し忘れないように
- Generateタスクだけでなく、(外だしSQLがある場合は)Sql2Entityタスクも実行
環境上の注意点
AccessContextで「Anonymous」を廃止
共通カラムの機能を利用していて、以下のようにAccessContextをスレッド上での初期化をInterceptorやFilterなどで処理している場合はこの話は無関係です。
AccessContext context = new AccessContext();
context.setAccessTimestamp(accessTimestamp);
context.setAccessUser(accessUser);
context.setAccessProcess(accessProcess);
AccessContext.setAccessContextOnThread(context);
上記の処理がされてない状態で共通カラムの自動設定処理が実行された場合に、AccessUserやAccessProcessなどで「Anonymous」という文字列がデフォルト値になっていましたが、 これは業務的に意味のないものなので廃止しました(今後は例外がthrowされます)。共通カラムを利用する場合は必ず事前にAccessContextを初期化して下さい。 (日付だけはデフォルト値(現在日時)が存在します)
これにより、AccessContextを初期化しているつもりで実はしてなくって「Anonymous」が登録されてしまっているようなバグ(かなり気付きにくいバグ)が例外として検知されるようになります。
実装上の注意点
PrefixSearch/LikeSearchで一致方向を指定したら自動エスケープ
PrefixSearch/LikeSearchで一致方向を指定された場合は自動でエスケープ処理を入れるようにしました。 エスケープ文字はDBFluteがサポートしている全てのDBで試しているパイプライン「|」です。 (DBFluteの曖昧検索のエスケープ処理は、指定された値の中に含まれているエスケープ文字もエスケープするため、エスケープ文字が何であるかは意識する必要はありません)
PrefixSearch
PrefixSearchは、それだけで前方一致と決定しているので自動でエスケープされます。
LikeSearch
LikeSearchは、LikeSearchOptionでlikePrefix()/likeContain()/likeSuffix()いずれかを呼び出したら自動でエスケープされます。 その後escapeByXxx()を呼び出す必要はありません。実装済みのプログラムなどで既にescapeByXxx()が呼び出されていても動作は全く問題ありません。 その場合はエスケープ文字を明示的に指定していることになり、特に移行する必要もありません。