DBFluteタスク
DBFluteタスクとは?
DBFluteが提供する "Antタスク" です。
タスクを実行することで自動生成ツールとしての機能を利用することができます。
DBFluteタスクの一覧
- JDBCタスク
 - 実際のデータベースからスキーマ情報を取得
 - Docタスク
 - スキーマ情報からドキュメントを自動生成
 - Generateタスク
 - スキーマ情報からクラスを自動生成
 - Sql2Entityタスク
 - 外だしSQL(OutsideSql)からクラスを自動生成
 - OutsideSqlTestタスク
 - 外だしSQL(OutsideSql)を一括実行してテスト
 - ReplaceSchemaタスク
 - スキーマを再構築(初期化・作成・データ登録・整合性チェック)
 - Manageタスク
 - 管理用のサブタスク (Renewal, Regenerate など) を実行できる
 
タスク実行コマンド
DBFluteクライアント配下に、それぞれのタスクを実行する "スクリプトファイル(.bat|sh)" があり、それを実行することでDBFluteタスクを実行することができます。
Windows環境のEclipse上からは、ダブルクリックで実行できます。もしくは、"ctrl + shift + R" の "Open Resource" からコマンドファイルを選択して実行できます(多くの人がこれで実行しています)。
タスクの実行タイミングと役割
DBFluteタスクのおおよそ想定される実行タイミングとその役割です。ReplaceSchemaに関しては、開発プロジェクトの利用ポリシー次第によって色々と変わってきます。
実装前
- 開発用DBスキーマの作成
 - 
			
- ReplaceSchema
 - DBスキーマを作成、マスタ・テストデータの登録 (アーキテクト、ディベロッパー)
 
 - 実装開始直前 (開発用DBスキーマの作成後)
 - 
			
- JDBC
 - メタ情報を取得 (アーキテクト)
 - Doc
 - SchemaHTMLを生成 (アーキテクト)
 - Generate
 - クラスを自動生成 (アーキテクト)
 
 
実装中
- アプリ実装中
 - 
			
- OutsideSqlTest
 - 外だしSQLの2Way-SQLとしての検証 (ディベロッパー)
 - Sql2Entity
 - 外だしSQLのクラスを自動生成 (ディベロッパー)
 
 - DB変更の発生
 - 
			
- ReplaceSchema
 - DBスキーマを再作成 (アーキテクト、ディベロッパー)
 - JDBC
 - 変更分のメタ情報を取得 (アーキテクト)
 - Doc
 - 変更分をSchemaHTMLに反映 (アーキテクト)
 - Generate
 - 変更分をクラスに反映、影響範囲の特定 (アーキテクト)
 - OutsideSqlTest
 - 外だしSQLの影響範囲の特定 (アーキテクト、ディベロッパー)
 - Sql2Entity
 - 変更分をクラスに反映、影響範囲の特定 (アーキテクト)
 
 - DBFluteアップグレード直後
 - 
			
- JDBC
 - 新しいDBFlute(モジュール)にメタ情報を反映 (アーキテクト)
 - Doc
 - 新しいバージョンのSchemaHTMLを生成 (アーキテクト)
 - Generate
 - 新しいバージョンのクラスを生成 (アーキテクト)
 - Sql2Entity
 - 新しいバージョンのクラスを生成 (アーキテクト)
 
 - テストデータの変更・追加
 - 
			
- ReplaceSchema
 - マスタ・テストデータの変更分の反映 (アーキテクト、ディベロッパー)
 
 
実装後
- 結合テスト用DBスキーマ作成
 - 
			
- ReplaceSchema
 - DBスキーマを作成、マスタ・テストデータの登録 (アーキテクト)
 
 - 結合テスト用テストデータの変更・追加
 - 
			
- ReplaceSchema
 - マスタ・テストデータの変更分の反映 (アーキテクト)
 
 - 本番用DBスキーマ作成
 - 
			
- ReplaceSchema
 - DBスキーマを作成、マスタ・初期データの登録 (アーキテクト)
 
 - 本番運用後のDB変更
 - 
			
- ReplaceSchema
 - alter 文の整合性チェック、開発用 のDBスキーマを再作成 (アーキテクト、ディベロッパー)
 - JDBC
 - 変更分のメタ情報を取得 (アーキテクト)
 - Doc
 - 変更分をSchemaHTMLに反映 (アーキテクト)
 - Generate
 - 変更分をクラスに反映、影響範囲の特定 (アーキテクト)
 - OutsideSqlTest
 - 外だしSQLの影響範囲の特定 (アーキテクト、ディベロッパー)
 - Sql2Entity
 - 変更分をクラスに反映、影響範囲の特定 (アーキテクト)
 
 
補足
本番DBに対しては ReplaceSchema は利用しません(してはいけません)。
タスク実行ログ
実行ログの出力先
DBFluteタスクの実行ログは コンソール かつ [DBFluteクライアント]/log/dbflute.log に出力されます。エラー発生時などはこれらログを参考にエラー原因を特定します。
最後のログメッセージ
お決まりの最後のログメッセージ(Final Message)を見逃さないようにしましょう。 エラーが発生したのかどうか、そのときどんな設定だったのか、そういった情報を得ることができますし、タスクによって独自の結果情報が表示されることもあります。 特に ReplaceSchema は詳細な実行結果が表示され、DDLやテストデータの不備があった場合などにこの情報がとても役に立ちます。
e.g. ReplaceSchemaのお決まりの最後のログメッセージ(Final Message) @Log
...
 _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 [Final Message]: 00m05s805ms
 
   DBFLUTE_CLIENT: {exampledb}
     database  = mysql (MySQL 5.0.51a)
     language  = java
     container = seasar
     package   = com.example.dbflute.mysql.dbflute
 
   DBFLUTE_ENVIRONMENT_TYPE: {df:default}
     driver = com.mysql.jdbc.Driver
     url    = jdbc:mysql://localhost:3306/exampledb
     schema = {exampledb.$$NoNameSchema$$ as main}
     user   = exampledb
     props  = {}
     additionalSchema = nextexampledb.$$NoNameSchema$$(catalog)
     dataLoadingType  = ut
     refreshProject   = dbflute-mysql-example
 
  {Create Schema}: success=92 failure=0 (in 4 files)
   o replace-schema-00-system.sql
   o replace-schema-10-basic.sql
   o replace-schema-20-view.sql
   o replace-schema-50-procedure.sql
 
  {Load Data}: loaded-files=21
   (common)
   o 10-master.xls
   (ut)
   o 90-VENDOR_LARGE_DATA.tsv
   o 91-VENDOR_LARGE_DATA_REF.tsv
   o 94-WHITE_QUOTED.tsv
   o (and other tsv files...)
   o 96-WHITE_SELF_REFERENCE.csv
   o 98-WHITE_BINARY.csv
   o 20-member.xls
   o 30-product.xls
 
  {Take Finally}: success=14 failure=0 (in 2 files)
   o take-finally-00-assert.sql
   o take-finally-90-largedata.sql
 _/_/_/_/_/_/_/_/_/_/ {ReplaceSchema}
	タスクのメモリ設定
DBFluteタスクが利用するメモリ設定は、DBFluteクライアントの _project.bat|sh にて設定されています。ただし、基本的にはデフォルト設定で十分であると想定されています。
