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