DBアクセスを定番化しよう DBFlute入門

第2回 DBFluteではじめてのDBアクセス

この記事を読むのに必要な時間:およそ 6 分

DBFluteの利用

それでは,ようやく準備が整いましたので,簡単なDBアクセスを試してみましょう。

Quick JUnitのインストール

単体テストの作成・実行を支援するプラグインがありますので,まずこちらをインストールします。これが無くてもテストを作成することはできますが,あると非常に便利です。

手順は更新サイトが変わるだけDoltengやEMechaをインストールしたときと同じ要領です。以下のような手順でインストールします。

  1. メニューにて「ヘルプ⁠⁠-⁠ソフトウェア更新⁠⁠-⁠検索とインストール」を選択
  2. フィーチャーの更新画面にて「インストールする新規フィーチャーを検索⁠⁠-⁠次へ」を選択
  3. 更新アクセス先サイト画面にて「新規リモート・サイト」を選択
  4. ローカルサイトの編集ダイアログにて以下を入力してOKを選択
  5. Quick JUnitにチェックを付けて「完了」を選択
  6. 更新画面にて「Quick JUnit」を選択
  7. 次へを選択し,フィーチャー・ライセンスに同意しさらに次へ
  8. 終了を選択
※2
更新サイトが「3.1」となっていますが、Eclipse-3.3でも動作します。既に登録されている場合は不要です。

テストクラスの作成

それでは,テストクラスを作成してみましょう。

  1. 「org.seasar.dbflute.example.gihyojp.dbflute.exbhv.MemberBhv」を開く
  2. カーソルをクラス宣言の括弧内に配置して「ctrl + 9」を押す
  3. 「テスティングペアがありません。作成しますか?」というダイアログが表示されるので,⁠はい」を選択
  4. テストケースの作成画面が表示されるので「ソースフォルダ」を以下のように修正
     ⁠dbflute-gihyojp-example/src/main/java」
    ⁠dbflute-gihyojp-example/src/test/java」
  5. 「完了」を選択

すると,⁠src/main/test」配下に「org.seasar.dbflute.example.gihyojp.dbflute.exbhv.MemberBhvTest」が作成されます。

テストケースの作成

テストケースを作成して,DBアクセスしてみましょう。前回の記事で紹介した「ConditionBean」「Behavior」を利用しますリスト7⁠。

リスト7:まずはじめのDBアクセス

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("ス"));
    }
  }
}

カーソルををメソッドの宣言の括弧内に配置して「ctrl + 0」を押すと,テストが実行されます。

JUnitが緑を表示したら成功です。また,コンソールにSQL文と結果が表示されます図11⁠。

図11 初めてのDBアクセスの実行ログ

図11 初めてのDBアクセスの実行ログ

簡単にログの説明をしておきます。

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の詳細な説明を実際に実行しながら進めていきたいと思います。

著者プロフィール

久保雅彦(くぼまさひこ)

DBFluteメインコミッタ。主にオープン系の開発に従事。DB設計・DB周りの実装などを担当することが多い。