DBFlute-1.0.5J was released.
(ごーじぇいです、めいじぇい)
DBFlute Top
Change Log
Migration Point
オープンソースプロダクト「DBFlute」
のリリース通知です。
(プログラマー向けの内容です)
まず、一つ、自動生成される Behavior のソースコードの
サイズが半分くらいになりました。(コンパイル後の.classのサイズ)
具体的には、インナークラスが減って .class ファイルが減りました。
そして、LoadReferrerに新しいインターフェースが。
DBFlute の LoadReferrer、
とても強力な one-to-many のための道具ですが、
one-to-many-to-many, many-to-one-to-many
など様々なリレーションを同時に辿るようなとき、
ちょっと、ゴタゴタしてしまいます。
LoadReferrerOptionをnewしたり、
pulloutで親テーブルのリストを抽出したり、
ちょっと手続き的なことが多くなります。
そこで、
Loader方式 @since 1.0.5J
詳しくの上のリンクに書いてありますが、
ここでは Lambda で書いてみましょう。
MemberCB cb = new MemberCB();
cb.query()...
List<Member> memberList = memberBhv.selectList(cb);
memberBhv.load(memberList, loader -> {
loader.loadPurchaseList(purchaseCB -> {
purchaseCB.query()...
}).withNestedReferrer(loader -> {
loader.loadPurchasePaymentList(paymentCB -> {
paymentCB.query()...
});
});
loader.pulloutMemberStatus().loadMemberLoginList(loginCB -> {
loginCB.query()...
});
});
リストを取り扱う手続きを省略しています。
今までの Load メソッドのオーバーロードで迷うこともありません。
どんどんアプリの画面はリッチになっていきます。
一回の検索で取得するデータもどんどん多くなって来ました。
昔は、LoadReferrerでそんなにたくさん関連テーブルを並べることは
珍しかったと思うのですが、最近では日常茶飯事です。
ということで、こういった
「ERDのリレーションを辿っているかのような」インターフェース、
とってもうれしいかなって。実装しながら自分では思います。
もともと、SetupSelect や QueryRelation は
そういう感じでしたから、LoadReferrer も追いついたかなと。
Java8 の Lambda があるからこそという感じなので、
1.1 からと考えていたのですが、
なんだかんだ、1.0.x 系も長生きしますから、
先立って実装してみました。
ぜひ、使ってくださいませ♪
...
...
さて、あと一つ、
1.1 までにやっておきたいことがあります。
それはまた