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プロパティを利用することで、様々なオプションが利用可能です。
