テンプレートによるセットアップ

ここでいうテンプレートとは?

プロジェクト固有の設定を管理するDBFluteクライアントのテンプレートを示します。

セットアップ概要

手順は以下のようになります。

補足:自動生成のために必要なプロパティを「DBFluteプロパティ」と呼びます。

推奨される配置構成

推奨されるDBFluteのモジュールやクライアント、自動生成クラスのソースディレクトリの配置構成は以下のようになります。後述する手順の中で以下の構成を参考にします。

dbflute_[project]の[project]の部分には任意の名称を付けます。通常は対象となるデータベース(スキーマ)を表す名称を付けます。この名称を「クライアントプロジェクト名」と呼びます

ex) Javaの場合:
     xxxproject
         +- .settings
         +- dbflute_[project]         // DBFluteクライアント
         |     +- dfprop
         |     +- log
         |     +- ...
         +- mydbflute
         |     +- dbflute-0.8.8       // DBFluteモジュール
         +- src/main/java             // ソースディレクトリ
ex) C#の場合:
     xxxproject
         +- dbflute_[project]         // DBFluteクライアント
         |     +- dfprop
         |     +- log
         |     +- ...
         +- lib
         +- mydbflute
         |     +- dbflute-0.8.8       // DBFluteモジュール
         +- source/xxx.sln            // ソースディレクトリ

1. DBFluteモジュールをダウンロードして配置

DBFluteモジュールをダウンロードしてZIPファイルを解凍し、DBFluteモジュールをプロジェクトに配置して下さい。

配置場所は、先述の配置構成を参考にして下さい。

2. DBFluteクライアントの配置

2-1. テンプレートの配置

先ほど配置したDBFluteモジュールの./etc/client-template/dbflute_dfclient.zipを解凍し、 展開されたディレクトリの中のファイルを全てそのままコピーしてプロジェクトに配置して下さい。

配置場所は、先述の配置構成を参考にして下さい。

2-2. クライアントプロジェクト名の反映

クライアントプロジェクト名(DBFluteクライアントのdbflute_[project]の[project]部分)を各種設定に反映して下さい。

「dfclient」という名前でよければそのままでも構いません。プロジェクトで識別しやすい任意の名前でOKです。

2-3. 利用するDBFluteの指定

_project.bat/.shの「DBFLUTE_HOME」変数の値を以下のように修正して下さい。(コメントアウトを外します)

ex) DBFluteの配置場所が「xxxproject/mydbflute/dbflute-0.6.5」の場合: @_project.bat
set DBFLUTE_HOME = ../mydbflute/dbflute-0.6.5

補足:DBFluteモジュールをバージョンアップした際は、ここを修正してバージョンを切り替えます。

3. DBFluteプロパティの設定

3-1. basicInfoMapの設定

3-1-1. 必須プロパティ

DBFluteクライアントのdfprop配下のbasicInfoMap.dfpropをテキストエディタで開いて、以下の必須プロパティを設定して下さい。

3-1-2. 特定環境適用プロパティ

「ある特定の環境に適用するためのプロパティ」を設定して下さい。 それぞれデフォルト値が設定されていますので、そのままで問題なければ指定する必要はありません。

自動生成クラスの出力先(generateOutputDirectory)

自動生成されるクラスの出力先を設定します。DBFluteクライアントからの相対パスです。 デフォルト値は[../src/main/java]なので、アプリの構造と不一致の場合は変更して下さい。

ex) 自動生成の出力先を[../foo]配下にする場合 @basicInfoMap.dfprop
; generateOutputDirectory = ../foo
リソースファイルの出力先(resourceOutputDirectory)

Seasarの場合のdbflute.diconやSpringの場合のdbfluteBeans.xmlなどのリソースファイルの出力先を設定します。 generateOutputDirectoryプロパティのディレクトリからの相対パスです。 デフォルト値は[../resources]なので、generateOutputDirectoryもデフォルトであれば[src/main/resources]に出力されます。 アプリの構造と不一致の場合は変更して下さい。

ex) 自動生成の出力先を[../bar]配下にする場合 @basicInfoMap.dfprop
; resourceOutputDirectory = ../bar
テーブル名の規約調整(isTableNameCamelCase)

DB上のテーブル名の規約が[ORDER_DETAIL]という形式でなく[OrderDetail]という形式(キャメルケース)かどうかの設定します。 デフォルト値は前者の形式を想定していますので、アプリケーションが後者の形式の場合は[true]を指定して下さい。

ex) テーブル名が[OrderDetail]という形式の場合 @basicInfoMap.dfprop
; isTableNameCamelCase = true
カラム名の規約調整(isColumnNameCamelCase)

DB上のカラム名において[isTableNameCamelCase]と同様の調整をします。

ex) カラム名が[OrderDetailId]という形式の場合 @basicInfoMap.dfprop
; isColumnNameCamelCase = true

さらに「複数DB対応」の場合に、考慮すべきプロパティが幾つかあります。詳しくはこちら

3-2. DB接続情報の設定

該当のデータベースへの接続情報をDBFluteクライアントの「./dfprop/databaseInfoMao.dfprop」ファイルに設定して下さい。 各種データベース毎の設定方法に関してはこちらをご覧下さい。

4. 自動生成の実行

それでは、自動生成をしてみましょう。

4-0. スキーマの作成(replace-schema)

この時点では、データベース上のスキーマが既に作成されていることが前提ですが、もしReplaceSchemaを使ってスキーマを作成する場合は、 この時点でReplaceSchemaの設定をして実行してスキーマを作成します。ERDツールなどから生成したDDL文(Drop文なし)を「./playsql/replace-schema.sql」に記載して、 DBFluteクライアント配下のreplace-schema.bat(.sh)を実行します。すると、DDL文が実行されスキーマが作成されます。 ReplaceSchemaについては、ツールとしてのDBFluteのタスク一覧をご覧下さい。

4-1. スキーマ情報の取得(jdbc)

DBFluteクライアント配下のjdbc.bat(.sh)を実行して下さい。実際にDBに接続してスキーマ情報を取得します。 「./schema」配下にproject-schema-[project].xmlが出力されます。

4-2. スキーマ情報のHTML化(doc)

DBFluteクライアント配下のdoc.bat(.sh)を実行して下さい。「./output/doc」配下にproject-schema-[project].htmlが出力されているはずなのでご覧下さい。スキーマ情報がしっかり取得できていることを確認して下さい。

4-3. クラスファイルの自動生成(generate)

DBFluteクライアント配下のgenerate.bat(.sh)を実行して下さい。パッケージ構成と共にクラスファイルが生成されます。

4-4. コンパイルしてみる

前提となる環境がそれっていればコンパイルが通るはずです。

4-5. DBFluteのコンポーネントを有効にする

Javaの場合(Seasar)

自動生成クラスの出力先が「../src/main/java(デフォルト)」であれば、dbflute.diconは「../src/main/resources」に出力されます。これをapp.dicon(SeasarのルートDicon)において、Includeするようにして下さい。

Doltengなどでプロジェクトを自動生成した場合、app.diconにてデフォルトで「dao.dicon」をがIncludeされている場合がありますがこれは削除して下さい。

ex) app.diconでdbflute.diconをInclude @Dicon
<include path="dbflute.dicon"/>
<!-- <include path="dao.dicon"/> -->
Javaの場合(Spring)

DIコンテナにSpringを利用する場合は、dbflute.diconに代わってdbfluteBeans.xmlが出力されているはずです。これをルートのBean定義から参照するようにして下さい。

Javaの場合(Lucy)

DIコンテナにLucyを利用する場合は、dbflute.diconに代わってdbfluteBeans.xmlが出力されているはずです。これをルートのBean定義から参照するようにして下さい。

C#の場合

Quillを利用しているため、特にDiconのような設定ファイルはありません。

4-5. さあDBFluteを使ってみましょう!

Javaの場合(Seasar)

Seasarコンポーネントに以下のように定義することでBehaviorをインジェクションすることができます。

ex) TeedaのページクラスにBehaviorをインジェクション(MEMBERというテーブルの場合) @Java
@Binding(bindingType = BindingType.MUST)
protected MemberBhv memberBhv;

変数名がそのままdbflute.dicon上のコンポーネント名と一致する必要がありますのでご注意ください。(Behaviorのクラス名の先頭を小文字にしたものがコンポーネント名です)

C#の場合

任意のクラス(Seasarコンポーネントである必要はない)に以下のように定義することでBehaviorをインジェクションすることができます。

ex) 任意のクラスにBehaviorをインジェクション(MEMBERというテーブルの場合) @C#
protected MemberBhv memberBhv;
public UserOriginalClass() {// コンストラクタ
    QuillInjector.Inject(this);
}

型で判別しますので変数名は自由です。

5. その後

DBFluteのセットアップが終わった後に、DBFluteを実際に使いながら必要に応じてアプリケーションの特性に合わせた調整を行います。

具体的には「シーケンス」、「排他制御」、「共通カラム」、「区分値」などです。詳しくはこちら

Document

Topics