プロシージャのResultSetのCustomizeEntity

@DBFlute-0.9.6.8, Java
最近のバージョンで対応したけど、新ドキュメントが出るまで、
紹介しなかった機能を特集していきます。

【前提】
そもそもDBFluteでは、プロシージャ対応のクラスを
自動生成して、プロシージャを呼び出すことができます。
(ストアドプロシージャ・ストアドファンクションなど)
このクラスを ProcedurePmb と呼びます。

(外だしSQL)call()

ProcedurePmb は、プロシージャのメタデータから
自動生成されるため、例えば、プロシージャの名前が
変わったとか、パラメータ(引数)の構成が変わったなど、
呼び出しに関わる部分での変更をコンパイルエラーで検知
できます。(プロシージャの変更もDB変更の一つとして)
また、OUTパラメータにも対応しています。

プロシージャの中の実装は、(当然)何も支援できませんが、
アプリからの呼び出し部分に関しては、DBFluteらしい
安全指向を貫いています。

但し、プロシージャで実行されたselect文に対する
ResultSet の取得はちょっと格好悪くって、
Map型での取得に限られていました。かつ、
NotParamResult(Set) に関しては、
メタデータから情報が取得できないため、Exクラスに
手動でプロパティを定義しないといけませんでした。

【新機能】
プロシージャの ResultSet に対応するCustomizeEntityを
自動生成できるようにしました(@since 0.9.6.8)。
Sql2Entityで、プロシージャを実際に実行し、
メタデータを取得します。NotParamResult(Set)
に関しても、自動でプロパティを定義します。

ProcedurePmb - ResultSetの取扱い

これ結構、強烈です。特にプロシージャで検索を書く機会の
多い人にとっては重宝するのではないかと思います。
プロシージャ内の select 文の select 句の構成を変えたら、
再自動生成で変更をコンパイルエラーで検知できるのです。
(マッピングミスも無くなります)

結構、"アプリのDBアクセスの大半はプロシージャで"
っていう開発もそんなに珍しいことではありません。
その是非はともかく、そういう状況でもDBFluteが
活躍できるフレームワークになれればいいなぁと。