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 にて設定されています。ただし、基本的にはデフォルト設定で十分であると想定されています。