手動でセットアップ
前提条件
前提となる環境
- Javaアプリケーションが実行できること
- 1.0.x なら Java6 以上、1.1.x なら Java8 以上の JDK か JRE の環境が必要です。
- アプリケーションのJavaプロジェクト (e.g. Eclipseプロジェクト) がすでに存在すること
- サポートされているDIコンテナのいずれかの動作環境が整っている必要があります。
- データベース上に(空の)スキーマが存在すること
- ReplaceSchemaを利用する場合は、スキーマ上にはテーブルは全くなしで(空のスキーマ)、 テーブルをCreateするDDL文が準備(ERDツールで生成されているなど)されていればOKです。
複数DB対応について
複数DB対応をする場合、事前にポイントを抑えてからセットアップをするようにして下さい。
セットアップ手順
1. DBFluteエンジンの配置
最新バージョンのDBFluteエンジンをダウンロードし、ZIPを解凍してプロジェクト直下の ./mydbflute/dbflute-x.x.x ディレクトリ配下に配置して下さい。
e.g. maihamaプロジェクトにDBFluteエンジン(1.1.0)を配置
maihama
|-src/main/java
|-src/main/resources
|-...
|-mydbflute
|-dbflute-1.1.0
|-ant
|-...
|-templates
|-build-torque.xml
|-product-is-dbflute-1.1.0
2. DBFluteクライアントの作成
配置したDBFluteモジュールの etc/client-template/dbflute_dfclient.zip を解凍してプロジェクト直下に配置して下さい。
e.g. maihamaプロジェクトにDBFluteクライアントを作成
maihama
|-src/main/java
|-...
|-dbflute_dfclient
|-dfprop
|-...
|-mydbflute
|-dbflute-1.1.0
以下の箇所を任意のクライアントプロジェクト名に変更して下さい(全て同名の必要があります)。
- dbflute_dfclient ディレクトリ名の dfclient 部分
- dbflute_dfclient/build.properties の torque.project の値
クライアントプロジェクト名は対象とするデータベースを識別できる名前 (例えばスキーマ名) が好ましいです。もし思いつかないでのあればデフォルトの dfclient のままでも構いません。
e.g. クライアントプロジェクト名を maihamadb に
maihama
|-src/main/java
|-...
|-dbflute_maihamadb // ディレクトリ名を dbflute_maihamadb に
|-dfprop
|-...
|-build.properties // torque.project の値をmaihamadbに
|-...
|-mydbflute
|-dbflute-1.1.0
3. 基本プロパティの設定
DBFluteプロパティ basicInfoMap.dfprop を参考に以下の項目を設定して下さい。
- database
- データベースの種類(MySQLやPostgreSQLなど)
- targetContainer
- DIコンテナの種類(SeasarやSpringなど)
- packageBase
- 自動生成されるクラスの基底パッケージ
4. データベース接続プロパティの設定
DBFluteプロパティ databaseInfoMap.dfprop を参考に以下の項目を設定して下さい。
- driver
- DBFluteが利用するJDBCドライバのFQCN
- url
- 自動生成対象データベースの接続url
- schema
- 接続スキーマ
- user
- 接続ユーザ
- password
- 接続ユーザのパスワード
5. DBFluteランタイムの準備
アプリケーションのクラスパスにDBFluteランタイム(JAR)を追加して下さい。
6. 特定環境適用プロパティ
ここからは、手動のセットアップかどうかに関係なく、どのセットアップ方法でも必要な手順です。
dfpropは、実際に使い始めてからつどつど微調整していく形でOKですが、 さすがに自動生成前にやっておいたほうがいいだろう "特定環境適用プロパティ" もあるので、そちらのページをサッと目を通して必要であれば直しておきましょう。 (ほとんどのケースで不要であると想定され、特殊な環境でなければ、もしくは、よくわからなければとりあえずスキップでもOK)
7. JDBCドライバの準備
DBFluteエンジンに同梱されていない DBMS (Oracle や DB2 など) であれば、JDBCドライバをダウンロードしてDBFluteクライアントの extlib に配置する必要があります。
H2, MySQL, PostgreSQL は同梱されているので、この手順はスキップしてOKです。
8. クラスの自動生成
それでは、自動生成をしてみましょう。
DBFluteタスク実行時に、 java.lang.UnsupportedClassVersionError, Unsupported major.minor version 52.0 のエラーが発生したときは、JAVA_HOME の設定を確認してみましょう。
9. DI環境の調整
アプリケーションで利用しているDIコンテナの環境にDBFluteのクラスを認識させて下さい。
x. その後の設定
ひとまず、アプリケーション上でDBFluteのクラスを利用することができるようになりました。 しかし、ディベロッパーに横展開するまでには、まだあともうちょい頑張りが必要です。 より良い環境で実装してもらうために、現場フィットな機能を整えましょう!
UnsupportedClassVersionErrorが発生したら
ReplaceSchema や Regenerate などのDBFluteタスク実行時に、UnsupportedClassVersionError, Unsupported major.minor version 52.0 のエラーが発生した場合は、環境変数の JAVA_HOME の設定が、Java8 ではなく Java6,7 になっている可能性があります。 (もしかしたら、JAVA_HOMEが設定されていないときでも発生するかもしれません)
JAVA_HOME を JDK8 に合わせて試してみましょう。
とりあえず、そのセッションだけ JAVA_HOME を設定して動かすのであれば、その場で export JAVA_HOME を実行するだけです。
e.g. Macで一時的に JAVA_HOME を設定 @.bash_profile
...$ export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
固定的に JAVA_HOME を設定するのであれば、.bash_profileに設定するとよいでしょう。
e.g. Macで .bash_profile に JAVA_HOME を設定 @.bash_profile
#!/bin/bash
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
...
ちょっとずつこういった問題はなくなっていくと思いますが、Java6, 7, 8 と環境が混じる時期では、まだ少し注意が必要です。
DBFluteの方で、JAVA_HOMEが設定されるようにしてもいいかもしれません。DBFluteクライアントの _project.sh にて、Macだったときにだけ JAVA_HOME が設定されるように。 (ただ、すべての人の環境でちゃんと動くかどうかは不明です...でも、DBFluteの幾つかのExampleでは入れてしまっています)
e.g. _project.sh Macで .bash_profile に JAVA_HOME を設定 @.bash_profile
#!/bin/bash
export ANT_OPTS=-Xmx512m
export DBFLUTE_HOME=../mydbflute/dbflute-1.x
export MY_PROPERTIES_PATH=build.properties
if [ `uname` = "Darwin" ]; then
export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)
fi