ここに来て大きなインパクトです。 まだ、続きます。DBFlute-1.1になったら... 1.0.x を安定板として、 1.1では、より最適化を目指します。
Option の Lambda 化
まずは、 Lambda (ラムダ) を使った LikeSearchOption の指定。
cb.query().setSea_LikeSearch("vi" , new LikeSearchOption().likeContain()); ↓↓↓ cb.query().setSea_LikeSearch("vi", op -> op.likeContain());
自分でnewするのをやめます。 拡張できるようにと自分でnewする方式にしていましたが、 拡張はExクラスでのオーバーライドでできるようにし、 Lambdaを使ってスコープの短いオブジェクトにします。 こちら、Option系のほとんどに適用されます。 ManualOrderBean, ColumnConversionOptionなど。 【1.0.xから移行される方のために】 littleAdjustmentMap.dfpropにて戻せます。 (共存させることができます) isMakeDirectConditionOptionSetup = true isMakeDirectConditionManualOrder = true ただし、ColumnConversionOptionは、 機能の利用頻度自体が相当に少ないという想定もあり、 元に戻すオプションは用意されていません。 (コンパイルエラーになった場所を直してくださいませ)
Select の Lambda 化
そして... これが一番の大きな話だと思いますが、決断しました。 検索するとき、ConditionBean を自分 new しません。
MemberCB cb = new MemberCB(); cb.query().setFormalizedDatetime_IsNotNull(); cb.query().addOrderBy_Birthdate_Desc(); List<Member> memberList = memberBhv.selectList(cb); ↓↓↓ List<Member> memberList = memberBhv.selectList(cb -> { cb.query().setFormalizedDatetime_IsNotNull(); cb.query().addOrderBy_Birthdate_Desc(); });
Behavior と ConditionBean の距離を縮めます。 スコープを短くして、予期せぬトラブルを減らしたいと。 現場で、あまりやってもらいたくない再利用をよく見かけました。 ConditionBeanの良いところを無くしてしまうもの。 ConditionBeanの再利用は、細かく部品単位でメソッド化 これを推し進めるインターフェースにしていきたいと考えました。 -> where句の再利用 【1.0.xから移行される方のために】 littleAdjustmentMap.dfpropにて戻せます。 (共存させることができます) isMakeDirectConditionBeanSetup = true 並行運用しながら徐々に移行していくことができます。
条件メソッドのシンプル化
そして、以下の条件メソッドが、 デフォルトでは出力されなくなりました。 query().setSea_PrefixSearch() -> LikeSearchを使って: op.likePrefix() query().setSea_DateFromTo() -> FromToを使って: op.compareAsDate() 便利なメソッドではありましたが、 逆に LikeSearch や FromTo に気付かないなど、 ちょっと中途半端感がありました。 Lambdaを導入することによって、 LikeSearch や FromTo が書きやすくなったこともあり、 入り口は一つにしようという感じです。 【1.0.xから移行される方のために】 littleAdjustmentMap.dfpropにて戻せます。 isMakeConditionQueryPrefixSearch = true isMakeConditionQueryDateFromTo = true
BatchUpdateのシンプル化
また、BatchUpdate で更新カラムを明示的に指定する、 オーバーロードメソッドがデフォルトで出力されなくなります。 BatchUpdateは、「むかし」全カラム更新でした。 その回避策として、SpecifyColumnを使ったカラム指定を 導入しました。 いま、BatchUpdateは、 Setter呼び出しのカラムが更新対象です。 -> 更新系、列挙されるカラムのまとめ そのため、SpecifyColumnを使ったメソッドの役割は、 あまりなくなりました。 「Setter呼び出しに関わらずこのカラムを更新したい」 ということもあるでしょうが、ケースは少ないだろうと。 また、詰め替えるなどで回避策はあるということで、 シンプル化のために出力されないようにしました。 【1.0.xから移行される方のために】 isMakeBatchUpdateSpecifyColumn = true で元に戻せます。
1.1は、Java8をふんだんに
1.0.5Lには、こちらまだ含まれていません。 というか、Java8への移行を考えている、 もしくは、Java8で開発し始めようとしている、 という方は、1.1のパイロット版をそろそろ出します。 もう 1.0.x + Java8 じゃなく... Java8 なら 1.1 で! リリースが今月中とかでなければ、ぜひ! できるだけ早く提供できるよう、いま猛烈に実装しています。 良いものにしたいと思っています。