@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
DBFluteのまとめ
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
★概要
リーン・スタートアップ&インクリメンタル開発
設計しながら実装する開発 (納期の短い開発)
■以下の機能を自動化
・O/Rマッパー 自動生成ドリブン
⇒DBのテーブル構造をもとにEntityクラスが自動生成される。
・DB管理支援ツール DB寛容開発自動化
変更に強い!に特化したフレームワーク
★登場人物
各クラスとその役割について記載
【Beheiver クラス (Bhv)】-------------------------------------------------------------------
DBアクセスを担当するクラス
DTOに相当する。
ConditionBean, 外だしSQL等を呼び出す。
Generateタスクにより1テーブルごとに1クラス自動生成される。
クラスはEntity名 + Bhv
DIにより利用可能
〇メソッド一覧
http://dbflute.seasar.org/ja/manual/function/ormapper/behavior/index.html#about
【ConditionBean クラス (CB)】-------------------------------------------------------------------
タイプセーフにSQLを組み立てるクラス
JPQLに相当?
Generateタスクにより1テーブルごとに1クラス自動生成される。
〇ConditionBean要素の一覧
http://dbflute.seasar.org/ja/manual/function/ormapper/conditionbean/about.html#abbreviation
〇ひとめでConditionBean
http://dbflute.seasar.org/ja/manual/function/ormapper/conditionbean/hitomecb.html
【外だしSQL】
SQLを外部ファイルに定義すること。
2Way-SQL(アプリからでもツールからでも動作できる。テストしやすい)
SQL変更に強い(必要なクラスが自動生成してくれるらしい。)
・次を自動生成する。(ParameterBean,Entity)
・Sql2EntityタスクによりParameterBeanEntityクラスを作成する。
参考
〇外だしSQLの使い方
・http://dbflute.seasar.org/ja/manual/function/ormapper/outsidesql/howto.html
【ParameterBeanクラス (pmb)】
・SQLのバインド変数を一つのオブジェクトとしたクラス
・Sql2Entityタスクにより自動生成される。
・外だしSQLへのパス情報を内部で保持する。
★セットアップ作業
DBFluteの各タスクを超簡単にまとめる。
〇Manageタスクの実行
http://dbflute.seasar.org/ja/manual/function/generator/task/manage/index.html#about
〇DBFluteタスク
http://dbflute.seasar.org/ja/manual/function/generator/task/index.html
Manage.bat (引数 1)を実行するとどうなるか?
⇒様々な他タスクが実行される。(Renewalタスク)
RelplaceSchema : スキーマの再作成, テストデータの一括登録(データはcsv等のファイルから読み込まれる。(playsql/data/common/xxxに格納)
JDBC : 実際のDBからスキーマ情報を取得する。
Doc : 取得したスキーマをもとにテーブル定義初に相当するHTMLファイルを作成する。(output->doc->schema-XXX.html)
Generate : 取得したスキーマをもとに(Behavior,ConditionBean)などのクラスが作成される。
OutsideSqlTest : すべての外だしSQLを実行し整合性チェックをする。
必ずロールバックが走るのでUPDATE文があっても問題ない。
Sql2Entity : 外だしSQLからEntity, ParameterBean,BehaviorQueryPath等の関連クラスが作成される。
開発者として、どのタスクをどのタイミングで実行すべき?
外だしSQLを修正 ⇒ Sql2Entity,OutsideSqlTestタスクを実行
テストデータ追加・変更 ⇒ ReplaceSchema
呼び出し順序
Controller
↓
Logic
↓
result = Bhv(CB)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
H2のまとめ
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
H2 Data Engineというのが正式名称
embedded (はめ込まれた、埋め込まれた)
〇インストール~ログインまで
・インストーラをダウンロードし、解凍する。
・H2 Console を立ち上げる。
・「http://localhost:8082」でbrowserを開く
・H2はデータベースが未作成の場合、自動で作成してくれるらしいが自分の場合は
TestConnection時下記エラー (エラーコード 90146)
Database "C:/Users/{Username}/test" not found, and
IFEXISTS=true, so we cant auto-create it [90146-199] 90146/90146 (Help)
対策として手動でDBを作成する。
タスクバーから「H2 Database Engine」を選択し、右クリック「Create a new database」
パスワードを設定して作成。
〇接続URLの記述方法
http://h2database.com/html/cheatSheet.html
jdbc:h2:./test
・jdbc:h2:までは固定の記載
・./ カレントディレクトリは「H2のインストールディレクトリ/bin」
・~/ ホームディレクトリはC:\User{UserName}
・testはDBファイル「test.mv.db」を指す。
〇H2とはなんぞや
file:///D:/100_Tools/100_Program/200_Business/H2DatabaseEngine/H2/docs/html/quickstart.html
<データベースとしてのH2>
・H2では「.mv.db」という拡張子のファイルでDBの情報を保持する。
・SQLの記述もH2独自のものが用意されている(公式リファレンス参照)
<DBMSとしてのH2>
・H2コンソールはブラウザ上でDBへの操作が可能。
・ローカル,サーバともに接続可能。
・JDBC_APIがサポートされたDBであれば接続可能(H2, Oracle, Postgle etc...)
<JDBCとしてのH2>
・自身(H2)もJDBC_APIをサポートしている。
<組み込みモードとサーバモード>
・組み込みモードはローカルのDBへアクセス
サーバモードは別PCのDBへアクセスする。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
O/Rマッパー
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
DB上のデータとアプリケーション(Java)のデータを
自動変換してくれるための機構。
DBFluteの特徴
・JDBCにのみ依存
http://tamata78.hatenablog.com/entry/2016/06/07/202046
http://taktos.hatenablog.com/entry/2014/08/15/DBFlute%E3%82%92%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%A0%E3%81%91%E7%B0%A1%E5%8D%98%E3%81%AB%E8%AA%AC%E6%98%8E%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B
SpringとDB周りのまとめ
■データソースとは
・DBへの接続情報に相当するリソース
・DIコンテナで管理される。
■データソースの種類は3つ
・Springやサードパーティが提供するデータソースを利用。
・アプリケーションサーバ側で定義したデータソースをJNDI経由で取得し利用。
・組み込みデータベース(H2など)をデータソースとして利用する。
アプリケーション起動時にDBの構築及びデータソースの設定がされる。
(逆に言うとアプリケーション終了ごとにDBが破棄されるため、
あらかじめDDLや登録用データが必要。)
開発時は利用されるが、本格的なアプリにはあまり利用されない。 --- こっちを利用。
■Spring JDBC
SQLの内容に依らず共通処理を行う。
・コネクション管理
・SQL実行
・例外ハンドリング