jfluteの日記 このページをアンテナに追加

2018-04-01

DBFlute-1.1.7 Released

|

Java8対応のDBFluteのリリース。
DBFlute-1.1.7 です。

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

今回は、dfprop で新しいプロパティ多く追加されています。
でも、それらどれも非常にマニアックではありますが...

# DBFlute Runtime, DBFlute Engine
# 両方ともアップグレードしないと、
# 自動生成クラスでコンパイルエラーになりますので、
# 両方のアップグレードお忘れなく。

repsAsDataManagerMap

replaceSchemaMap.dfpropにて指定できます。
ReplaceSchemaをデータ登録としてだけ使うことができます。
例えば、Flywayと連携する時に使えるかもしれません。
# flyway creates schema by own-managed DDL so replace-schema becomes data manager
; repsAsDataManagerMap = map:{
    ; isUseRepsAsDataManager = true
}
でも、Flywayを使う時に、
必ず使うかというとそうではないと思います。
ローカル環境ではフルのReplaceSchemaで、
サーバー環境ではFlywayを使う、という風な住み分けに
なっていればこの機能は不要です。

ローカルでもFlywayを使うけど、
テストデータはReplaceSchemaを使いたい、
というような時に利用します。

databaseSubType

basicInfoMap.dfpropにて指定できます。
例えば、SQLServerを使うにしても LocalDB だと、
またちょっと動きを変える必要が出てきたりします。

具体的には...
ストアドプロシージャーやVIEWのdrop文で、
データベース名の修飾を付けるとエラーになるとか。
(将来変わるかもしれませんが)

そんなとき、subTypeOnDatabase に、
localdb と指定しておくと、
LocalDB用の挙動になってくれます。
    ; database = sqlserver
    ; subTypeOnDatabase = localdb
対応はまだちょっとだけですが、
将来的に色々と「同じDBでも種別によって違う」が
増えてきた時に、このプロパティを利用していきます。

take-finally.sh

ReplaceSchema の take-finally にて、
スクリプトが利用できるようになりました。

大量データ登録など、
DBMSネイティヴコマンドを利用したい時に使えます。
Windowsなら.bat, Mac/Linuxなら.shです。

// TakeFinallyで外部スクリプト
http://dbflute.seasar.org/ja/manual/function/generator/task/replaceschema/takefinally.html#outsidescript

conventionalTakeAssertMap

replaceSchemaMap.dfpropにて指定できます。

例えば、ReplaceSchemaにて...

"テストデータが一件もないテーブルがあったら落ちる"

というチェックをかけることができます。

テストデータなしで新しいテーブルが
どんどん追加されるのを防ぐことができます。
(最低でも一件はデータを作ってテーブル追加)
    # /- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # o conventionalTakeAssertMap: (NotRequired - Default map:{})
    #  Does it assert data by conventional rule in take-finally
    #  For example, you can check empty table (no-data).
    #
    ; conventionalTakeAssertMap = map:{
        ; emptyTableMap = map:{
            ; isFailure = true
            ; workableRepsEnvTypeList = list:{ut}
            ; tableExceptList = list:{}
            ; tableTargetList = list:{}
        }
    }
    # - - - - - - - - - -/
tableExceptList で除外もできるので、
既存テーブルを指定して、途中から運用するというのもできます。
また、一時テーブルで0件じゃないといけないものも指定できます。

deprecatedSelectByPKUQMap

littleAdjustmentMap.dfpropにて指定できます。
selectByPK(), selectByUniqueOf() を、
非推奨にするオプションです。

あんまりやらないと思いますが、
SpecifyColumn を必須にしている現場だと、
自動的に全カラムspecify()になってしまう
selectByPK()が困るということで、
このようなオプションが設けられました。

deprecatedSpecifyBatchColumnMap

littleAdjustmentMap.dfpropにて指定できます。

deprecatedSelectByPKUQMapと同様で、
SpecifyColumn を必須にしている現場だと、
specify().everyColumn()されたら意味ないので、
このようなオプションが設けられました。

細かい改善していってます

他にも細かいのありますが、
DBFluteもまだまだこういった細かい改善が
求められています。

昨年はあまりリリースできませんでしたが、
今年はちょくちょく改善をリリースしていきたいと思います。