Generateタスク

Generateタスクとは?

メタデータを元に、主に "Entity" などのテーブル対応のクラスを自動生成するDBFluteタスクです。

主な実行タイミング

  • 実装開始直前 (開発用DBスキーマの作成後)
  • DB変更の発生
  • DBFluteアップグレード直後
  • 本番運用後のDB変更

実行コマンド

DBFluteクライアント配下の generate.(bat|sh) をコマンドから実行します。

環境構築

DBFluteのセットアップが終わった時点から利用できます。 但し、スキーマのメタデータがないと無意味ですので、実行前にJDBCタスクが必ず(一度は)実行されていることが前提です。

処理概要

Generateタスクを実行すると処理が始まります。

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