#DBFluteについて自分なりまとめ
##DBFluteとは
DBへの接続をしてくれるORマッパーのフレームワークです。
このフレームワークの特徴は、DBの変更に強いことです。
DBのEntityを読み込み自動でそれに対応したクラスとメソッドを生成しそれを利用し、
DDLを書くことなくレコードの取得や更新、追加、削除ができます。
##使い方メモ
###ConditionBean
これにレコードの条件を付けていく。
List<Member> memberList = memberBhv.selectList(cb -> {
// 3. 取得したい関連テーブルを指定 (取得したい関連テーブルは何か?)
// {select句, join句}
cb.setupSelect_MemberStatus();
// 4. 絞り込み条件・並び替え条件を設定 (どんな絞り込み、並び替えをしたいか?)
// {where句, order-by句, (from句, on句)}
cb.query().setMemberName_PrefixSearch("S");
cb.query().addOrderBy_Birthdate_Desc();
cb.query().addOrderBy_MemberId_Asc();
});
上記はアローを使った無名関数で条件を決めてるが、
CBを決めてBhvに投げればよい。
CBの条件は下記
http://dbflute.seasar.org/ja/manual/function/ormapper/conditionbean/index.html#function
###Bhv
ConditionBeanに条件を詰めた後このBhvのselectList()で検索やinsert()登録処理を行える。
List<xxxxConditionBean> = xxxxBhv.sekectList(ConditionBean);
xxxxBhv.insert(ConditionBean);
汎用的に使う単テーブルに対しての検索等はBhvにBeanの設定まで追記しておくと、
ほかの機能からも呼び出しやすく、使いまわしやすい。
基本的には開発者としてはConditionBeanとBhvを把握すれば問題ない。
##なんでDBFluteを使っているのか
###メリット①
上記で紹介したConditionBeanやBhvはDBのエンティティを自動で読み取ってくれるため、非常にDB変更の強い。
カラムの増減があったから影響調査が必要…っていうときは問題がある個所はコンパイルエラーになるので見つけやすい。
###メリット②
SQLを記載しないので検索条件の追加などが気軽にできる。
テーブルの結合もキーを用いて自動で行ってくれるのでSQLを実際に考えなくてもよい。
SQLが苦手な方はこっちのほうが楽かも。
###メリット⓷
カラムの値に対して区分値を設定できるため、できるだけハードコーディングをしなくても済む。
他画面でも同じカラムを参照すれば、自動で取得できるため整合性を気にしなくてもよい。
ConditionBeanにもその区分値対応した条件設定メソッドが自動生成されるため、
視覚的にもわかりやすい。
###メリット④
replace-schemaというDBを構成するSQLがまとめられたバッチが存在する。
これのCREATE文を修正して流しなおすだけで、単体環境にDBを構築しなおすことができる。
利点としては同時開発時に一瞬こっちの想定したテーブル構成にしたい・・・ということができる。