DBFlute-1.1.8 Released

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

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

今回は、Alto DBFlute周りが、
大きく改善されています!

SchemaHTML

テーブル作成日、カラム作成日が、
表示されるようになりました!
 => SchemaHTMLのExample

もともと HistoryHTML を見ればわかることでしたが、
やはり、SchemaHTML上でパッとわかったほうが、
活用されることも多いでしょう。

直接的に役立つ情報ではありませんが、
"このカラム...後から追加されたんだ、なるほどだから..."
って、何かDBに関して迷うことがあったときに、
役立つかもしれません。

...

さて、Decommentの大きな改善に関しては、
DBFlute Introリリースブログでお知らせします。

その他、小さな修正です。
DBコメントにHTMLエスケープ文字(<)が入ってると、
HTMLタグに展開されて表示されていたのを修正しました。

HistoryHTML

まず、デザインを修正!少しだけ見やすくなった...はず。

そして、DB変更の "作者" と "gitブランチ名" が、
表示されるようになりました!
 => HistoryHTMLのExample

作者は、Systemプロパティのuser.nameより、
gitブランチ名は、gitコマンドから。
(もちろん、gitを使ってない環境なら素通りです)

DB変更の履歴はどんどん積み上がってきますが、
"誰が、どのブランチで?" ってのがわかると、
迷ってることが解決しやすいかもしれません。
(ブランチ名がチケット名になっていれば、
実質的にチケット番号になりますし)

また、HistoryHTMLの自動生成スピードが上がっています。
今まで、Historyがたくさん積み上がると、
Docタスク自体が何秒もかかってしまっていたのですが、
大量Historyに関するパフォーマンス劣化は、
ほとんどなくなりました。
もし、"Docタスクで30秒くらいかかる" とか、
感じている方いらっしゃいましたら、
ぜひ 1.1.8 にアップしてみてください。

内部的には...
古くからあった MapListString の代わりに、
新しく作った DfMapStyle を使っています。
今後、他の "mapスタイル" のファイルの読み込みでも、
DfMapStyle の方を使っていく予定です。

...

さて、大きな新機能、Hacommentに関しては、
DBFlute Introリリースブログでお知らせします。

その他、小さな修正:
o DBコメントにHTMLエスケープ文字(<)が入ってると、
HTMLタグに展開されて表示されていたのを修正

SchemaPolicyCheck

まず、SchemaPolicyCheckって何?
のために、概念ドキュメント作りました!
 => DB設計のチェックスタイル (SchemaPolicyCheck)

そして、今回の改善の目玉は...

運用途中からでもチェック書けやすくなった!

に尽きます。

既存テーブルでチェックかかりまくってしまう問題、
これで新しいテーブルもチェックが外れちゃう...
というジレンマありました。
ですが、こんな条件が書けるようになりました。
# 2018/05/19より未来に追加されたテーブルは、
# FK制約名は FK_[テーブル名] で始まること
; if firstDate is after:2018/05/19 then fkName is prefix:FK_$$table$$
ドキュメントでも紹介しています。
 => 運用途中からの導入

とある日付から未来に追加されたテーブルやカラムだけ、
...なチェックをする、ということが可能に。
既存テーブルは置いておいて、これからはこうしていこう!
ということができるので、もっと気軽に適用できます。

それに伴って、
いままで theme だけでしか指定できなかったチェックが、
statement でも表現できるように改善が行われています。

o hasAlias, hasCommentなどが statement でも
o same...IfSame... が statement でも

その他、細かい改善が行われています。

o ドットつなぎの tableColumnName が利用できるように
o if columnName is $$table$$_ID と表現できるように
o if alias is $$tableAlias$$ID と表現できるように
o then columnName is $$table$$_ID と表現できるように
o then alias is $$tableAlias$$ID と表現できるように

ぜひ、SchemaPolicyCheckで、
良いDB設計ライフをお過ごしください()^^。

ConventionalTakeAssert

ReplaceSchemaで、
テストデータが一件も入ってなかったら落ちる...
という ConventionalTakeAssert ですが、
こちらもやはり、運用途中から適用が難航していました。
すでにテストデータのないテーブルがたくさん!

ということで、ここでも firstDate が使えるようになり、
; onlyFirstDateAfterTargetDate = 2018/05/19
とすると、その日付以降に追加されたテーブルだけ、
チェック対象とすることができます。
    # /- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # 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:{}
            ; onlyFirstDateAfterTargetDate = 2018/05/19
        }
    }
    # - - - - - - - - - -/
テストデータ、しっかり入れていきましょう!

simpleDtoDefinitionMap

SimpleDtoを自動生成する機能があります。
 => (転送用の)シンプルなDTO

ここで、テーブルや外だしSQLごとに、
自動生成の除外や対象を指定できるようになりました。

o tableExceptList/tableTargetList
o sql2entityExceptList/sql2entityTargetList

DBFluteユーザの集いメーリングリストで、
要望を頂きました。
 => SimpleDtoの生成範囲に関して | DBFluteユーザの集い

SimpleDtoのご利用ありがとうございます!
(マニアックな機能ですけど、使われているもんですね^^)

Spring + HikariCP

SpringFramework + DBFlute で、
HikariCP を利用する時に、
自動でトランザクション制御が行われるようにしました。

今まで、commons-DBCP と Tomcat-DBCP だけが、
自動制御の対象だったので、他のDBCPを使う時は、
"一手間だけ" 必要でした。
今回、その一手間を省けるDBCPが増えました。

こちらは、ユーザーの方のフィードバックで、
コードレベルで指摘をしてくださいましたので、
本当に助かります。
taktosさん、ありがとうございます!
(ついでに!? commons-DBCP2 も対象になっています)
 => HikariCPへの対応依頼 | DBFluteユーザの集い

ただ、そもそもの構造を変えて、
どんなDBCPだろうが自動制御できないか!?
まだ議論が続いています。
TransactionAwareDataSourceProxy を、
うまく組み込めたらいいですが...

ついでに、DBFluteのSpringページが、
だいぶ古くなっていたので刷新しました。
 => Spring Frameworkの取扱い

LastaDoc

LastaFluteの自動生成ドキュメントLastaDoc,
 => Actionのドキュメント自動生成 (LastaDoc)

のデザインを微調整しました。
(少し見やすくなったはずです)

また、lastafluteMap.dfprop にて、
LastaDocの表示内容を少しだけ
微調整できるようにしました。
とりあえず、Action一覧のdescriptionを
非表示にできるように。

LastaDocを、オフィシャルドキュメント的に使う想定で、
その辺を調整したいという要望がありました。

オープンソース全文検索サーバー Fess にて、
LastaDoc が大いに活用されているようです。
 => Fess の LastaDoc

LastaFluteの特徴の一つですね(^^

Oracle, BLOB in プロシージャ

Oracle で、ストアドプロシージャの引数で、
BLOB型を使っている場合に、
大きなサイズのbyte配列を指定すると、
エラーになってしまう問題を修正しました。

なんと、そういう場面でもDBFlute使われてるんですね(^^。
フィードバックをくれた awaawa さん、ありがとうです。

また、今後そういった場面が他の箇所でもあるかもしれないので、
プラグインのvalueTypeとして、
"bytesBlobType" を利用できるようにしました。
いざとなったら、これを指定すれば、
何かBLOB周りで発生した問題を回避できるかもしれません。

その他、細かい修正

o 組み込んでいる H2 database を 1.4.197 にアップ

o Runtime の DfStringUtil.count() のパフォーマンス改善

o DBコメントに、バックスラッシュが入っていると、
自動生成されたクラスがコンパイルエラーにならないように

ユーザーがいるからリリースできる

様々なユーザーの方の協力のもと、
リリースできたバージョンと言えるでしょう。

本当に、ありがとうございます。

古いドキュメントを少しずつ改善していこうかなと
思っています。これからもよろしくお願いします。