DBFlute-1.2.5 Released

DBFlute Runtime/Engineのリリース

ちょっと寒い夏のリリースです!
(今日すんごい寒いんですよ><)

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

代表的なものをここで紹介します。

OptionalThingに最新Javaのメソッドを

DBFluteでは、java.util.Optionalをあまり使わず、DBFluteに最適化した OptionalThing や OptionalEntity を使っています。

java.util.Optionalのメソッドを全く同じように利用できて、かつ、DBFluteならではの便利メソッドを提供しています。

それがずっとJava8のjava.util.Optionalを参考にしていたのですが、Java9,10,11...とメソッドを増えているので、ここで一気に追加しました。

ifPresentOrElse()やor()など新しいメソッドが利用できるようになっています。


また増えたら、気づいた時点でつど追加していく感じですね。(もうあまり増えない?)

ReplaceSchemaの改善

大量改行のTSVパフォーマンス劣化を解消

今までReplaceSchemaのTSVデータ登録に弱点がありました。

一行の中の一つカラムのデータの中に大量の改行が含まれている場合にパフォーマンスが劣化していました。

ずっと直したかったんですけどなかなか難易度も高く、レアな現象でもあったので着手できなかったのです、今回それを修正しました。

xlsxファイルのファイルサイズ上限解除

ユーザーの方からのフィードバックです!

// freegenタスクでエクセルを使うと「ZipBomb detected!」が発生することがある
https://groups.google.com/g/dbflute/c/DNfBvHOIgoM

ZipSecureFile.setMinInflateRatio() を 0 に設定するようにしました。

PostgreSQLのinheritテーブルdrop調整

PostgreSQLのinheritテーブルを使った時の、ReplaceSchemaのdropテーブル時のdrop順序の制御が、最新のPostgreSQLで効かなくなっていました。

(古いバージョンだと問題なく動いていたが、メタデータの取得時のちょっとしたルール変更により落ちるようになっていた)

今回それを修正し、最新のPostgreSQLでもinheritの参照元からdropされるようになります。

...

inheritテーブル使ってます???
(一応、テストプロジェクトで試してるんですよ)

JavaPropertiesReaderで複数行コメント

JavaPropertiesReaderクラスが、複数行コメントに対応しました。

# これからはこの行も抽出される
# 今まではこの行だけが抽出されていた
sea.land.piari = 1

というか知らない人も多いと思いますので紹介を...

そもそもDBFlute Runtimeの中に .properties ファイルをコメント付きで読み込むクラスがあったのです。それで複数行のコメントも取れるようにしたということですね。

あまり普通には使わないかもですが、PropertiesHtml とかで複数行のコメントが表示されるのでだいぶ気持ちよくなりました(^^。遠慮なく複数行のコメント書いてもOKです!


というかPropertiesHtmlも知らないでしょうから紹介を...

// PropertiesHTML
http://dbflute.seasar.org/ja/manual/function/generator/task/doc/propertieshtml.html

これも相当前からありましたよ(^^。使うと便利だなって思える機能なので、ぜひ。


あと、LastaFluteのConfigやMessagesクラスのJavaDocでも複数行コメントがしっかり表示されるようになります。

LastaFluteのアプリ区分値大改善

こまごまたくさんあります。

冗長な区分値コメントをエラーに

こういうのです。もう落とすようにしました。

alias=正式会員, comment=正式会員

書くこと無いならcomment属性自体の定義が不要です。
書くならやはり説明や申し送り事項が欲しいですね。

groupingMapを最大限継承

今までは参照するDB区分値のgroupingMapの継承に制限がありましたが、最大限継承するようにしました。

groupingMapをアプリ区分値でも

今まではアプリ区分値でgroupingMapの設定ができませんでしたが、定義できるようになりました。

refTypeで差分調整できるように

o refType=includeしつつ一部overrideできるように
o refType=existsしつつ一部inheritできるように

これでだいぶ関連付けをしっかりできるようになりました。

関連のルール(refType)の設定: http://dbflute.seasar.org/ja/lastaflute/howto/dbflute/appcls.html#reftype

namedclsを参照できるように

DB区分値だけじゃなく、名前付き区分値(namedcls)も参照できるようになりました。

BFFレイヤとかで、RemoteApi経由でDBを参照しているような場合、DB区分値がありません。

名前付き区分値でリモート先の区分値を定義しているような場合、自身のアプリ区分値から参照したいものです。

クライアント向け名前付き区分値dfpropの自動生成

lastafluteMap.dfpropの freeGenList に clientcls を追加しました。
アプリ区分値と同等の区分値定義になるnamedcls用のdfpropを自動生成できるようになります。

例えば、DB APIがclientclsでdfpropファイルを自動生成して、そのdfpropファイルをBFFに渡してnamedcls自動生成してもらえば、区分値の同期ができます。

(これはBig機能なので、またどこかで書くと思います)

まだまだ

本当はインパクトのある機能を提供しようと思ってたのですが、ちょっと細々と差し込みの実装がたくさんあったので、いったんそれは保留でリリースとなりました。

本当に実装できるかまだわからないでドキドキしているのですが、お楽しみに(^^。

f:id:jflute:20210324151851j:plain