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

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

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

環境構築手順{EMecha利用}

Eclipseのプロジェクトの作成できたので,そのプロジェクトにDBFluteクライアント環境を作成します。EMechaを利用すると,クライアント環境の作成と同時にDBFluteのモジュール本体の設置も行うことができます。

EMechaのDBFluteクライアント作成画面を利用します図4⁠。

  1. Doltengで作成したプロジェクト「dbflute-gihyojp-example」を選択(パッケージエクスプローラ上にて)
  2. メニューにて「新規⁠⁠-⁠その他」を選択
  3. ウィザード選択画面にて「DBFlute Client Directory」を選択
  4. 画面にて以下の入力項目を入力
    項目入力値
    Container Namedbflute-gihyojp-example ※自動設定
    Projectexampledb
    Databaseh2 ※リストボックスにて選択
    Target Languagejava
    Target Containerseasar
    Package Baseorg.seasar.dbflute.example.gihyojp.dbflute
    Driverorg.h2.Driver ※「Database」の選択次第で自動設定
    Urljdbc:h2:file:../src/main/resources/exampledb/exampledb
    Schema(空)
    Usersa
    Password(空)
  5. 画面にて「Latest Version ⁠From WebSite⁠⁠」ボタンを選択
  6. 画面にて「Download DBFlute」ボタンを選択 ※注:ダウンロードに多少時間が掛かります。
  7. 終了を選択
  8. プロジェクト「dbflute-gihyojp-example」を選択して最新化(F5)

図4 EMechaのDBFluteクライアント作成画面

図4 EMechaのDBFluteクライアント作成画面

すると,dbflute-gihyojp-example配下に「dbflute_exampledb」「mydbflute」が作成されます図5⁠。

図5 EMechaで作成したDBFlute環境

図5 EMechaで作成したDBFlute環境

それぞれの入力項目の概要説明は以下の通りです。

項目概要
ProjectDBFluteクライアントの任意のプロジェクト名。通常はDBの名称やアプリの名称などを入れる。
Database利用するデータベースの種別。リストボックスにて選択。
Target Language自動生成するクラスの言語。リストボックスにて選択。
Target Container利用するDIコンテナ。リストボックスにて選択
Package Base自動生成するクラスのパッケージを指定。通常はルートパッケージ + 'dbflute'。
Driver DB接続で利用するドライバ名。項目「Database」が選択されると自動的にドライバ名が設定される。
UrlDB接続URL。
SchemaDB接続スキーマ。データベースによっては指定無しでもOK。
UserDB接続ユーザ。
PasswordDB接続パスワード。
S2Dao利用するS2Daoのバージョン。通常は「Latest Version ⁠From WebSite⁠⁠」で取得した値を設定。
DBFlute利用するDBFluteのバージョン。通常は「Latest Version ⁠From WebSite⁠⁠」で取得した値を設定。

執筆時点でのEMechaのバージョンは「0.1.0」で,まだまだ開発中のステータスです。今後細かい部分での改善や他の設定項目への対応など環境構築支援を予定しています。

DBFluteにてテーブルスキーマ作成

さて,DBFluteの準備が整いました。今回のサンプルで利用するテーブルスキーマを作成します。

テーブルスキーマの作成方法はどうようにしても構いませんが,DBFluteではReplaceSchemaというタスクを提供し,テーブルの初期作成・再作成・テストデータ投入を簡単に実現できるようにしています。

DDL文は,次のリンクからダウンロードすることができます。

ダウンロードしたDDL文を「dbflute_exampledb/playsql/replace-schema.sql」として保存します図6⁠。

ReplaceSchemaタスクは,DDL文実行前に接続したスキーマ上の既存の参照性整合制約と既存のテーブルを全て削除するため,指定するDDL文にDROP文は要りません。また,テーブルの名前が変更になったり,テーブルが削除されたりした場合の古いテーブルも綺麗に消えますので,テーブル再作成時の煩雑な手作業も発生しません。

図6 ReplaceSchemaタスクで利用するDDL文の配置

図6 ReplaceSchemaタスクで利用するDDL文の配置

また,初期テストデータが登録されているエクセルファイルを次のリンクからダウンロードすることができます。

ZIPファイルを解凍し「dbflute_exampledb/playsql/data」配下に配置します図7⁠。

図7 ReplaceSchemaタスクで利用するテストデータの配置

図7 ReplaceSchemaタスクで利用するテストデータの配置

登録ユーザや更新日時などの共通列に固定値を簡単に登録したい場合は,default-value.txtにて定義を指定します。

ReplaceSchemaタスクは,このテキストファイルを参照してエクセルのテストデータとマージをしますリスト1⁠。

リスト1: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
}

それでは,ReplaceSchemaタスクを実行してみましょう。⁠dbflute_exampledb」配下の「replace-schema.bat」をOSコマンド上で実行します(UNIX上では「replace-schema.sh⁠⁠。

すると,⁠dbflute_exampledb/playsql/replace-schema.sql」に記述されているDDL文が実行され,Excelのテストデータ登録されます。実行ログは「dbflute_exampledb/log/dbflute.log」に出力され,そのログから処理の成功・失敗が確認できます図8⁠。

図8 ReplaceSchemaタスクの実行ログファイル

図8 ReplaceSchemaタスクの実行ログファイル

著者プロフィール

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

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