DBFluteクライアント

DBFluteクライアントとは?

DBFluteを利用するための アプリケーション設定(DBFluteプロパティなど) が含まれるディレクトリです(クライアントディレクトリとも呼ばれる)。一つのDBにつき一つのDBFluteクライアントが作成され、 指定されたDBFluteエンジンを参照し自動生成処理(スクリプト起動)を委譲します。

DBFluteクライアントの中にはデータベース接続情報などアプリケーション独自の情報が含まれるので、 アプリケーションにてしっかり管理をする必要があります(バージョン管理に追加するなど)。

e.g. DBFluteクライアントとDBFluteエンジンの関係 {exampledb, 1.0.0}
example-project
 |-dbflute_exampledb   // DBFluteクライアント
 |  |-dfprop
 |  |-...
 |  |-_project.bat(sh) // DBFluteエンジンへの参照(相対パス)が定義される
 |  |-...
 |-mydbflute
    |-dbflute-1.0.0    // DBFluteエンジン

dbflute_xxx の xxx 部分をDBFluteクライアントプロジェクト名と呼びます。この名前は、build.propertiesの torque.project の値と(習慣的に)一致します。

DBFluteクライアントの作成

EclipseプラグインやMavenプラグインなどで作成支援があります。

DBFluteクライアントの構造

e.g. DBFluteクライアントの構造 {exampledb}
dbflute_exampledb
 |-dfprop               // DBFluteプロパティの配置先 
 |-extlib               // (同梱されていない)JDBCドライバの配置先
 |-log                  // 自動生成実行ログの出力先
 |-output               // (自動生成クラス以外の)生成物の出力先
 |  |-doc               // SchemaHTMLなど生成ドキュメントの出力先
 |-playsql              // ReplaceSchema関連ファイルの配置先
 |  |-data              // ReplaceSchemaで登録するマスタデータ・テストデータの配置先
 |-schema               // スキーマのメタデータの出力先
 |-_project.bat         // DBFluteエンジンへの参照を管理するバッチスクリプト
 |-_project.sh          // DBFluteエンジンへの参照を管理するシェルスクリプト
 |-_readme.txt          // DBFluteクライアントについてのreadme
 |-build.properties     // ANT実行のためのビルドプロパティ(編集の必要性なし)
 |-doc.bat              // Docタスクのバッチスクリプト
 |-doc.sh               // Docタスクのシェルスクリプト
 |-generate.bat         // Generateタスクのバッチスクリプト
 |-generate.sh          // Generateタスクのシェルスクリプト
 |-jdbc.bat             // JDBCタスクのバッチスクリプト
 |-jdbc.sh              // JDBCタスクのシェルスクリプト
 |-outside-sql-test.bat // OutsideSqlTestタスクのバッチスクリプト
 |-outside-sql-test.sh  // OutsideSqlTestタスクのシェルスクリプト
 |-replace-schema.bat   // ReplaceSchemaタスクのバッチスクリプト
 |-replace-schema.sh    // ReplaceSchemaタスクのシェルスクリプト
 |-sql2entity.bat       // Sql2Entityタスクのバッチスクリプト
 |-sql2entity.sh        // Sql2Entityタスクのシェルスクリプト

DBFluteプロパティ (dfprop)

DBFluteプロパティの配置ディレクトリです。拡張子が .dfprop のファイルをエディタ(EMechaの DFEditor がお奨め)で編集して、DBFluteを利用する際のアプリケーション設定を調整します。

非同梱のJDBCドライバ (extlib)

同梱されていないJDBCドライバ(Oracleなど)を配置するディレクトリです。 実際にはこのディレクトリにクラスパスが設定されている訳ではなく、 DBFluteタスク実行時にこのディレクトリのライブラリを、DBFluteエンジンのライブラリ配置ディレクトリにコピーします。

タスク実行ログ (log)

DBFluteタスクを実行したときにDBFluteが出力するログの出力ディレクトリです。

dbflute.log

DBFluteタスク(自動生成処理)の実行時のコンソールに出力されたログがこのファイルに出力されます。 エラーが発生したときでコンソールを消してしまった場合は、真っ先に dbflute.log を見ます。 エラーメッセージを読むことで、設定ファイルの不備など例外の原因がわかります。 どうしても原因が分からなくて詳しい人に聞くときはこのログも提示しましょう。

dbflute.log は、1MBごとにローリング され、バックアップは二つまで保持されます。

DBFluteの処理がこのファイルの情報を参照することはありません。

velocity.log

もう一つ、velocity.log がありますが、Velocityテンプレート関連のログです。 基本的に意識することのないログですが、原因不明なエラーで詳しい人に聞くときはこのログも提示しましょう。

DBFluteの処理がこのファイルの情報を参照することはありません。

出力ドキュメント (output)

スキーマのメタデータから自動生成する(クラス以外の)生成物の出力ディレクトリです。

SchemaHTML

Docタスクを実行すると ./output/doc 配下にデータベース(スキーマ)のメタデータを閲覧するためのHTMLが出力されます。 アーキテクトにもディベロッパーにもとても役に立つものなので、常に気軽に閲覧できるようにしておくと良いでしょう。

LoadDataReverse

./output/doc 配下にもう一つ、Docタスクが提供するオプション機能として、 ReplaceSchemaタスクのデータ登録で利用可能なエクセルデータが出力されます。

ReplaceSchemaのリソース (playsql)

ReplaceSchemaで利用するDDLやマスタ・テストデータ(エクセルなど)などの配置ディレクトリです。

スキーマのメタデータ (schema)

JDBCタスクで取得したスキーマのメタデータを保存するXMLの出力ディレクトリです。 GenerateタスクやDocタスクなどはこのXMLの情報をもとにそれぞれの処理をします。

モジュールへの参照 (_project.bat|sh)

DBFluteクライアントがどのDBFluteエンジンを利用するのかを定義したスクリプトファイルです。EMecha や Maven DBFluet Plugin などのツールでは、アップグレード時にこのファイルを上書きしてDBFluteエンジンへの参照を更新しますので、基本的にアプリケーション側で独自に編集することはありません。 手動でのセットアップやアップグレードのときのみエディタでこのファイルを開いて修正します(バッチスクリプトとシェルスクリプトと両方とも修正すること)。

e.g. _project.shの中身 {exampledb,1.0.0}
#!/bin/sh

export ANT_OPTS=-Xmx256m

export MY_PROJECT_NAME=exampledb

export DBFLUTE_HOME=../mydbflute/dbflute-1.0.0

その他、ANT実行時のメモリ設定もこのファイルの中でしています。多めに設定していますので基本的には修正する必要はありませんが、 万が一必要な場合はここを修正します。

ビルドプロパティ (build.properties)

DBFluteクライアントプロジェクト名だけを管理するプロパティです。DBFluteタスク実行時に必要なファイルです。 基本的にこのファイルを開いたり修正したりする必要はほとんどありません。

e.g. build.propertiesの中身 {exampledb} @build.properties
# -------------------------------------------------------------------
#  P R O J E C T
# -------------------------------------------------------------------
torque.project = exampledb

DBFluteタスク実行スクリプト

DBFluteタスクを実行するためのスクリプトです。バッチスクリプトとシェルスクリプトと環境に応じて使い分けます。 これらスクリプトファイルは明示的に指定しない限り支援ツールなどから上書きされることはありませんので、 呼び出し構造さえ保てば独自の処理を追加するなどして構いません。

e.g. generate.shの中身 @generate.sh
#!/bin/sh

cd `dirname $0`
. _project.sh

echo "/nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
echo "Specify the file path to be used as build-properties."
echo "nnnnnnnnnn/"
export MY_PROPERTIES_PATH=build.properties

echo "/nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn"
echo "Execute {Generate}."
echo "nnnnnnnnnn/"
sh $DBFLUTE_HOME/etc/cmd/_df-generate.sh $MY_PROPERTIES_PATH