はじめに
前回は、
DBFluteの環境構築
環境の前提
以下の環境が利用されるPC上に揃っていることを前提とさせて頂きます。
- Java-5.
0 (以上) の実行環境 - Apache Ant-1.
7.0 (以上) の実行環境 - Eclipse-3.
2 (以上) ※今回は3. 3を利用
データベースに関しては、
テーブル構造は前回の記事の最初に紹介した
プラグインのインストール{Dolteng/EMecha}
まず、
DBFluteの環境を構築するためには、
手動で作成されても構いませんが、
また、
以下のような手順でインストールします。
- メニューにて
「ヘルプ」- 「ソフトウェア更新」- 「検索とインストール」 を選択 - フィーチャーの更新画面にて
「インストールする新規フィーチャーを検索」- 「次へ」 を選択 - 更新アクセス先サイト画面にて
「新規リモート・ サイト」 を選択 - ローカルサイトの編集ダイアログにて以下を入力してOKを選択
(図1) - Name : Seasar-3.
3 [1] - URL : http://
eclipse. seasar. org/ updates/ 3. 3/
- Name : Seasar-3.
- Seasar-3.
3にチェックを付けて 「完了」 を選択 - 更新画面にて
「Seasar-3. 3」- 「Dolteng」 を選択 [2] - 更新画面にて
「Seasar-3. 3」- 「EMecha」 を選択 - 次へを選択し、
フィーチャー・ ライセンスに同意しさらに次へ - 終了を選択

プロジェクト作成{Dolteng利用}
プラグインの準備ができたので、
- メニューにて
「新規」- 「プロジェクト」 を選択 - ウィザード選択画面にて
「Chura Project」 を選択 - プロジェクト名とルートパッケージを入力
- ロジェクト名 : dbflute-gihyojp-example
- ルートパッケージ : org.
seasar. dbflute. example. gihyojp
- プロジェクトタイプで
「Super Agile (Teeda + S2Dao)」を選択 - 完了
(プロジェクトが作成される)

すると、

環境構築手順{EMecha利用}
Eclipseのプロジェクトの作成できたので、
EMechaのDBFluteクライアント作成画面を利用します
- Doltengで作成したプロジェクト
「dbflute-gihyojp-example」 を選択 (パッケージエクスプローラ上にて) - メニューにて
「新規」- 「その他」 を選択 - ウィザード選択画面にて
「DBFlute Client Directory」 を選択 - 画面にて以下の入力項目を入力
項目 入力値 Container Name dbflute-gihyojp-example ※自動設定 Project exampledb Database h2 ※リストボックスにて選択 Target Language java Target Container seasar Package Base org. seasar. dbflute. example. gihyojp. dbflute Driver org. h2. Driver ※ 「Database」 の選択次第で自動設定 Url jdbc:h2:file:../ src/ main/ resources/ exampledb/ exampledb Schema (空) User sa Password (空) - 画面にて
「Latest Version (From WebSite)」ボタンを選択 - 画面にて
「Download DBFlute」 ボタンを選択 ※注:ダウンロードに多少時間が掛かります。 - 終了を選択
- プロジェクト
「dbflute-gihyojp-example」 を選択して最新化 (F5)

すると、

それぞれの入力項目の概要説明は以下の通りです。
項目 | 概要 |
---|---|
Project | DBFluteクライアントの任意のプロジェクト名。通常はDBの名称やアプリの名称などを入れる。 |
Database | 利用するデータベースの種別。リストボックスにて選択。 |
Target Language | 自動生成するクラスの言語。リストボックスにて選択。 |
Target Container | 利用するDIコンテナ。リストボックスにて選択 |
Package Base | 自動生成するクラスのパッケージを指定。通常はルートパッケージ + 'dbflute'。 |
Driver | DB接続で利用するドライバ名。項目 |
Url | DB接続URL。 |
Schema | DB接続スキーマ。データベースによっては指定無しでもOK。 |
User | DB接続ユーザ。 |
Password | DB接続パスワード。 |
S2Dao | 利用するS2Daoのバージョン。通常は |
DBFlute | 利用するDBFluteのバージョン。通常は |
執筆時点でのEMechaのバージョンは
DBFluteにてテーブルスキーマ作成
さて、
テーブルスキーマの作成方法はどうようにしても構いませんが、
DDL文は、
ダウンロードしたDDL文を
ReplaceSchemaタスクは、

また、
ZIPファイルを解凍し

登録ユーザや更新日時などの共通列に固定値を簡単に登録したい場合は、
ReplaceSchemaタスクは、
map:{ ; REGISTER_DATETIME = sysdate ; REGISTER_USER = replace-schema ; REGISTER_PROCESS = replace-schema ; UPDATE_DATETIME = sysdate ; UPDATE_USER = replace-schema ; UPDATE_PROCESS = replace-schema ; VERSION_NO = 1 }
それでは、
すると、

DBFluteにてスキーマ情報を取得
データベース上のテーブルの準備が整いましたので、
実行して成功すると、

DBFluteにてクラスを自動生成
スキーマ情報が取得できたので、
「dbflute_

DBFluteのdiconファイルをインクルード
DBFluteを利用する場合は、
Doltengで生成したsrc/
<include path="dao.dicon"/>
↓
<include path="dbflute.dicon"/>
実行時の接続データベースの設定
今回は、
Doltengで作成した直後のjdbc.
<!-- for H2 -->
<component name="xaDataSource"
class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"org.h2.Driver"
</property>
<property name="URL">
"jdbc:h2:tcp://localhost:9092/demo"
</property>
<property name="user">"sa"</property>
<property name="password">""</property>
<destroyMethod>
@org.seasar.framework.util.DriverManagerUtil@deregisterAllDrivers()
</destroyMethod>
</component>
ここの
<property name="URL">
"jdbc:h2:file:"
+ @org.seasar.framework.util.ResourceUtil@getBuildDir(@org.seasar.dbflute.example.gihyojp.dbflute.allcommon.Entity@class).getCanonicalPath()
+ "/exampledb/exampledb"
</property>
実行時のロギング設定
実行時のログの出力を調整します。
log4j.category.org.seasar=DEBUG
log4j.category.org.seasar.extension.dbcp=INFO
こちらは、
そこで、
また、
以下はアプリケーションのパッケージが
log4j.category.org.seasar=DEBUG
log4j.category.org.seasar.extension.dbcp=INFO
log4j.category.jp.gihyo=DEBUG
DBFluteの利用
それでは、
Quick JUnitのインストール
単体テストの作成・
手順は更新サイトが変わるだけDoltengやEMechaをインストールしたときと同じ要領です。以下のような手順でインストールします。
- メニューにて
「ヘルプ」- 「ソフトウェア更新」- 「検索とインストール」 を選択 - フィーチャーの更新画面にて
「インストールする新規フィーチャーを検索」- 「次へ」 を選択 - 更新アクセス先サイト画面にて
「新規リモート・ サイト」 を選択 - ローカルサイトの編集ダイアログにて以下を入力してOKを選択
- Name : Quick JUnit
[2] - URL : http://
quick-junit. sourceforge. jp/ updates/ 3. 1/
- Name : Quick JUnit
- Quick JUnitにチェックを付けて
「完了」 を選択 - 更新画面にて
「Quick JUnit」 を選択 - 次へを選択し、
フィーチャー・ ライセンスに同意しさらに次へ - 終了を選択
テストクラスの作成
それでは、
- 「org.
seasar. dbflute. example. gihyojp. dbflute. exbhv. MemberBhv」 を開く - カーソルをクラス宣言の括弧内に配置して
「ctrl + 9」 を押す - 「テスティングペアがありません。作成しますか?」
というダイアログが表示されるので、 「はい」 を選択 - テストケースの作成画面が表示されるので
「ソースフォルダ」 を以下のように修正 「dbflute-gihyojp-example/src/ main/ java」
→「dbflute-gihyojp-example/ src/ test/ java」 - 「完了」
を選択
すると、
テストケースの作成
テストケースを作成して、
public class MemberBhvTest extends S2TestCase {// TestCase → S2TestCase
private static final Log log = LogFactory.getLog(MemberBhvTest.class);
private MemberBhv memberBhv;
@Override
public void setUp() throws Exception {
super.setUp();
include("dbflute.dicon");
}
public void test_FirstImpact_Tx() throws Exception {
// ## Arrange ##
final MemberCB cb = new MemberCB();
cb.query().setMemberName_PrefixSearch("ス");
// ## Act ##
final ListResultBean<Member> memberList = memberBhv.selectList(cb);
// ## Assert ##
for (Member member : memberList) {
final Integer memberId = member.getMemberId();
final String memberName = member.getMemberName();
log.debug(" " + memberId + " - " + memberName);
assertTrue(memberName.startsWith("ス"));
}
}
}
カーソルををメソッドの宣言の括弧内に配置して
JUnitが緑を表示したら成功です。また、

簡単にログの説明をしておきます。
- MemberDao.
selectList() - 実際されたDaoクラスとそのメソッドです。
- MemberBhv.
selectList() --> ... - 呼び出されたBehaviorクラスとそのメソッドです。もし、
さらにPageクラスを経由してBehaviorを呼び出した場合は、 「MemberPage. doSearch():134 --> MemberBhv. selectList() --> ...」 というようになります。 - SqlCommand Initialization Cost: [00m01s329ms]
- アプリケーションが起動して最初のアクセス時の初期化コストです。2回目以降の同じメソッドへのアクセス時には発生しません。よって、
正確にDBアクセスのパフォーマンスを測る際は、 2回目以降のDBアクセスを参考にします。 - select MEMBER.
MEMBER_ ID... - 発行されたSQL文です。但し、
これは人間が見やすいように編集されたSQLであり、 実際にDBに発行されるSQLでは、 バインド変数を利用しています。 - ===========/ [00m01s641ms - Selected list: 2 first={...
- SQLの実行結果のコストと結果件数と最初のレコードのトレースです。DBFluteでは、
必ずこのようなデバッグログを出力し、 開発者がデバッグしやすいようにしています。
次回
これにて実行環境が整いました。次回はConditionBeanの詳細な説明を実際に実行しながら進めていきたいと思います。