移行 0.9.8.3 to 0.9.8.4
お約束の注意点
- 古いバージョンの削除
- 古いバージョンのDBFluteランタイム(JAR)が[web-INF/lib]の下などに残らないように
- タスクを実行し忘れないように
- Generateタスクだけでなく、(外だしSQLがある場合は)Sql2Entityタスクも実行
環境上の注意点
DataXlsTemplate は LoadDataReverse に
Docタスクの DataXlsTemplate は LoadDataReverse として再出発することになりました。
AlterCheckが生まれ変わり
前バージョンで導入された AlterCheck が、より現場フィットになるように改善されています。
実装上の注意点
SQLServerの正規表現ワイルドカードをエスケープ
SQLServer の LikeSearch では、正規表現ワイルドカードが利用できます。"[a-b]" という風に [ と ] で囲った中で正規表現が利用できます。ConditionBean および ParameterBean で行われている一致の方向が決まったときの自動のエスケープにおいて、 その括弧もエスケープをするようにしました。
これにて、アプリで自前でエスケープする必要はありませんが、このバージョンにアップグレードする際に既にエスケープ処理が入っていると、 二重でエスケープされてしまうので、自前のエスケープは基本的に除去する必要があります。
LikeSearchOptionで特殊ワイルドカードは実行時解決
Oracle と DB2 において、LikeSearchOption を ConditionBean や ParameterBean ではなく、 単なるエスケープのための文字列ユーティリティクラスとして利用している方のみ意識する項目です。 例えば、LikeSearchOption.generateRealValue() というメソッドに心当たりがない方は意識する必要はありません。
LikeSearchOption のクラス自体にワイルドカードをエスケープする処理が存在しますが、 Oracleの全角のパーセントやSQLServerの正規表現括弧など、DBMS独自のワイルドカードのエスケープは Behavior で検索処理を実行したときに解決されます。
それまでのバージョンでは、どのDBMSでも全角のパーセントを固定でエスケープしていましたが、 ワイルドカードでない文字をエスケープした場合にエラーになるDBMSが若干存在するため(Apache Derbyなど)、 DBMS独自のワイルドカードをエスケープするかどうかの判定を精密に行うために Behavior の中に移行しました。
よって、(Oracle, DB2 にて) LikeSearchOption を単なるユーティリティクラスとして利用している場合、 つまり option.generateRealValue() メソッドを直接呼び出した場合は、このバージョンから全角のパーセントはエスケープされないのでご注意下さい。