テンプレートによるセットアップ
環境の前提
詳しくはこちら
セットアップ概要
手順は以下のようになります。
- 1. DBFluteモジュールをダウンロードして配置
- 2. DBFluteクライアントの配置
- 3. ビルドプロパティの設定
- 4. 自動生成の実行
補足:自動生成のために必要なプロパティを「ビルドプロパティ」と呼びます。
推奨される配置構成
推奨される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_directory-template/minimumProperties.zipを解凍し、展開されたディレクトリの中のファイルを全てそのままコピーしてプロジェクトに配置して下さい。(C#の場合はminimumProperties4cs)
配置場所は、先述の配置構成を参考にして下さい。
2-2. クライアントプロジェクト名の反映
クライアントプロジェクト名(DBFluteクライアントのdbflute_[project]の[project]部分)を各種設定に反映して下さい。
- _project.bat/.shの「MY_PROJECT_NAME」変数の値を[project]に修正
- build-minimumProperties.propertiesのファイル名をbuild-[project].propertiesに修正
- build-[project].propertiesの中の「torque.project」の値を[project]に修正
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. ビルドプロパティの設定
3-1. build-xxx.propertiesの設定
3-1-1. 必須プロパティ
build-xxx.propertiesをテキストエディタで開いて、以下の必須プロパティを設定して下さい。
- torque.database = [database] --> oracleやmysqlなど
- torque.targetLanguage = [java or csharp] --> javaかcsharpかどちらか
- torque.packageBase = [package name] --> 自動生成クラスのパッケージ「jp.co.xxx.xxx.dbflute」
これらは、build-xxx.propertiesに最初からコメント付きで定義されています。プロジェクトに適した値に修正して下さい。
3-1-2. 特定環境対応プロパティ
「ある特定の環境に適用するためのプロパティ」を設定して下さい。
それぞれデフォルト値が設定されていますので、特に指定の必要がなければ設定する必要はありません。
もし設定が必要な場合は、「torque.xxx = [value]」という行を追加して設定しますが、そのときに先ほど配置したDBFluteの「./etc/client_directory-template/fullProperties/build-ldb.properties」からコメント付きの記述をコピーして持ってくることをお奨めします。
- torque.targetContainer = [seasar or spring] --> Default: seasar
- torque.java.dir = [path] --> Default: Java=../src/main/java C#=../source
- torque.isJavaNameOfTableSameAsDbName = [true or false] --> Default: false
- torque.isJavaNameOfColumnSameAsDbName = [true or false] --> Default: false
- torque.s2daoVersion = [s2dao version] --> Default: その時の最新バージョン
利用するDIコンテナを設定します。Springを利用する場合(Javaのみサポート)は「spring」と設定して下さい。
自動生成クラスの出力先を設定します。変更したい場合はコメントアウトされている「torque.java.dir = [path]」を有効にして設定して下さい。
DB上のテーブル名の規約が「ORDER_DETAIL」という形式でなく「OrderDetail」という形式(クラス名とテーブル名が同値)かどうかの設定をします。
DB上のカラム名の規約において「torque.isJavaNameOfTableSameAsDbName」と同様の調整をします。
利用するS2Daoのバージョンを設定します。古いバージョンのS2Daoを利用する際に「1.0.47」という風に設定します。
さらに「複数DB対応」の場合に、考慮すべきプロパティが幾つかあります。詳しくはこちら
3-2. DB接続情報の設定
該当のデータベースへの接続情報をDBFluteクライアントの「./dfprop/databaseInfoMao.dfprop」ファイルに設定して下さい。 各種データベース毎の設定方法に関してはこちらをご覧下さい。(*dfprop = DBFluteプロパティ)
★新ドキュメントが完全に出来上がっていないため、旧ドキュメントのJDBCの設定「JDBC Setting」へのリンクをここに置いておきます。
4. 自動生成の実行
それでは、自動生成をしてみましょう。
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定義から参照するようにして下さい。
ex) beeanRefContext.xmlでdbfluteBeans.xmlをInclude @XML
<beans>
<bean id="context" class="org.springframework.context.support.ClassPathXmlApplicationContext">
<constructor-arg>
<list>
<value>dbfluteBeans.xml</value>
<value>jdbcBeans.xml</value>
<value>jtaBeans.xml</value>
<value>tranBeans.xml</value>
<value>exampleBeans.xml</value>
</list>
</constructor-arg>
</bean>
</beans>
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を実際に使いながら必要に応じてアプリケーションの特性に合わせた調整を行います。
具体的には「シーケンス」、「排他制御」、「共通カラム」、「区分値」などです。詳しくはこちら
