Generateタスク
Generateタスクとは?
メタデータを元に、主に "Entity" などのテーブル対応のクラスを自動生成するDBFluteタスクです。
主な実行タイミング
- 実装開始直前 (開発用DBスキーマの作成後)
- DB変更の発生
- DBFluteアップグレード直後
- 本番運用後のDB変更
実行コマンド
DBFluteクライアント配下の generate.(bat|sh) をコマンドから実行します。
環境構築
DBFluteのセットアップが終わった時点から利用できます。 但し、スキーマのメタデータがないと無意味ですので、実行前にJDBCタスクが必ず(一度は)実行されていることが前提です。
処理概要
Generateタスクを実行すると処理が始まります。
- 1. SchemaXMLを参照
- 2. 古いクラスを削除
- 3. クラスを自動生成
- 4. BehaviorQueryPathをBehaviorに反映
- 5. Eclipseプロジェクトをリフレッシュ(オプション)
1. SchemaXMLを参照
JDBCタスクで出力された SchemaXML (スキーマのメタ情報)を読み込みます。
2. 古いクラスを削除
存在していないテーブル対応の既存のクラスは、(ファイルシステム上から)削除されます。
但し、一度自動生成した後(そのとき古いクラスを生成して)、自動生成の出力先ディレクトリやパッケージ構造などの設定を変更して再自動生成した場合は、 以前の環境における古いクラスは削除されません。(DI設定ファイルの名前の変更なども同様です)
3. クラスを自動生成
取得したメタデータからクラスを自動生成します。
クラスファイルは、自動生成するクラスの出力先ディレクトリ(basicInfoMap.dfpropのgenerateOutputDirectory) 配下にパッケージ構造をそのままディレクトリ構造として出力します。
パッケージ構造は、基底のパッケージ(basicInfoMap.dfpropのpackageBase) にそれぞれのクラス固有のパッケージ構造を付け足したものになります。
- allcommon
- DBFluteランタイムと連携する共通クラス (allcommon)
- Entity
- データを反映させるクラス (bsentity|exentity)
- DBMeta
- メタデータを保持するクラス (bsentity.dbmeta)
- Behavior
- DBアクセス処理を提供するクラス (bsbhv|exbhv)
- ConditionBean(など)
- 検索条件を組み立てるクラス (cbean)
DI設定ファイルも自動生成
クラスと同時にDI設定ファイルも自動生成されます。DI設定ファイルは、利用しているDIコンテナによって XML ファイル のものと クラス のものと分かれます。
XMLファイルの場合は、DBFluteが自動生成するリソース(basicInfoMap.dfpropのresourceOutputDirectory) 配下に出力されます。
クラスの場合は、共通クラス(allcommon)の一部として出力されます。
4. BehaviorQueryPathをBehaviorに反映
BehaviorQueryPathをBehaviorに反映します。 Sql2Entityタスクで定義したBehaviorQueryPathを削除しないためにGenerateタスクでも同じ処理を実行しています。
5. Eclipseプロジェクトをリフレッシュ(オプション)
refreshDefinitionMap.dfprop にてリフレッシュ設定がされている場合に、 指定されているEclipseプロジェクトをリフレッシュ(更新)します。 これにより、ファイルシステム上は生成されていてもEclipse上には反映されていないという状態が発生しません。
サポートされない名前
特殊なテーブル名やカラム名はサポートされません。
様々なオプション
DBFluteプロパティを利用することで、様々なオプションが利用可能です。