DBFlute-1.1.9 Released

約束のリリース

あけましておめでとうございます。

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

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

十一年連続、十一回目の元旦リリースです!

これまた「DBFluteフェス2018」での約束、
「元旦に何か出しますよ」を果たすことができました。

f:id:jflute:20190101173143j:plain

ふぅ...ぎりぎり

今回はズバリ、
「ArrangeQueryのドキュメント」
です。

そもそもArrangeQueryとは?

where句の再利用 (ArrangeQuery)

「再利用したいのは、
検索処理まるごとではなく、
where句の一部」

というコンセプトのもと、
業務単位で絞り込み条件をまとめたメソッドを、
ConditionBean自体に実装してみんなで再利用しようと。

「特別過ぎる優待会員」という定形の業務条件があったとして、以下のような条件をアプリケーションのいたるところで書いてしまったり...

// あっちでもこっちでもこの条件をコピー!?
cb.query().setMemberName_LikeSearch("S", op -> op.likePrefix());
cb.query().setMemberStatusCode_Equal_Formalized();
cb.query().existsPurchaseList(purchaseCB -> {
    purchaseCB.query().setProductId_Equal(SPECIAL_PRODUCT_ID);
});

ではなく...

ConditionBean や ConditionQuery の、
再自動生成されても消えないExクラスにて実装します。

public class MemberCQ extends BsMemberCQ {

    ...

    /**
     * 特別過ぎる優待会員
     */
    public void arrangeTooPreferentialMember() {
        setMemberName_LikeSearch("S", op -> op.likePrefix());
        setMemberStatusCode_Equal_Formalized();
        existsPurchaseList(purCB -> {
            purCB.query().setProductId_Equal(SPECIAL_PRODUCT_ID);
        });
    }
}

そして、それぞれの検索処理のConditionBeanにて、そのArrangeQueryメソッドを呼び出すだけ!
"arr" で補完して、定義されているarrangeメソッドたちを探しましょう。

cb.query().arrangeTooPreferentialMember(); // 特別過ぎる優待会員

こういう風に小さな部品での再利用を!

ジェネレーションギャップを採用しているDBFluteが、昔から推奨しているパターンです。実際に、多くの現場で使われるようになってきました。jfluteが知っている現場でも大いに活用しています。まさしく ConditionBean の良いところを最大限活かしていると言えます。

f:id:jflute:20190101172520j:plain

ArrangeQueryのドキュメント

さて、別に ArrangeQuery 自体はずっと前から利用できるので目新しいものではありません。DBFluteの機能というよりかは、使い方の話なので、DBFluteが何かを支援するというものもありませんでした。

ですが、今回やったのは...

ArrangeQueryのドキュメントを自動生成

するというもの。

ArrangeQueryを作っても、それをディベロッパーに知ってもらえなければダメですし、全体的にどんなArrangeQueryが用意されているのかがわからないと利用もしづらいです。

そこでせめて一覧ドキュメントのようなものができれば、ということで作りました。
現場でも以前から待ち望んでくれていた機能です。DBFlute-1.1.9からは、SchemaHTMLの中に「ArrangeQuery List」という欄ができあがります。

f:id:jflute:20190101175504p:plain

とりあえずメソッド名と、JavaDocの一行目だけ出しています。これだけでも全体を把握するのに役に立つかと思います。今後は、もっともっと情報を付与していきたいです。

Docタスクで SchemaHTML を作れば自動的に付与されます。
なので、DBFluteをアップグレードしたら自然と作成されています。
ちょっと覗いてみてください。(何もなければ何も出ないですが...)

ドキュメントになるためのメソッドの規約があります。

o arrangeXxx() という形式のpublicメソッド
o 複数行形式のJavaDocの一行目にタイトルを

この辺は、徐々に調整していくかもしれません。
ひとまずは単純な規約で。

DBFluteはwhere句を大切にしたいです!

DBFlute自体の発展!

昨年の元旦リリースブログにて...

DBFlute本体を発展させていかないと

と言っていましたが、まさしくそれですね。SchemaPolicyCheckなどと合わせて、まだまだ DBFlute は発展できるはずです。もっともっと便利な機能を提供できるはずです。

ぜひ見守っていてください。

f:id:jflute:20190101181121j:plain