連載
» 2008年12月24日 00時00分 公開

オープンソースTERASOLUNAで作るWebアプリ(3):iBATISのORMとSpringのAOPを活用したDBアクセス (1/3)

[正野勇嗣,株式会社NTTデータ]

 連載第2回の「Hello World!で理解する、Webアプリ開発の分業化」では、TERASOLUNA Server Framework for Java Web版(以下、TERASOLUNAフレームワーク)を使って、Hello Worldを出力する簡単なアプリケーションを作成しました。

編集部注:TERASOLUNA Server Framework for Java」を含むTERASOLUNA全体について詳しく知りたい読者は、特集「Java、.NET、Ajax開発の“銀の弾丸”オープンソース?」をご覧ください。

 今回は、TERASOLUNAフレームワークを使ってデータベース(以下、DB)にアクセスするサンプルWebアプリケーションを作成します。TERASOLUNAフレームワークを使ったDBアクセスには下記の2点の特徴があります。

  • TERASOLUNAのDAOを用いたDBアクセス
    • JDBC APIを使用せずにDBへアクセスできる
    • DBへのアクセスの情報は、別設定ファイル(O/RマッピングORM)フレームワーク「iBATIS」のSQL設定ファイル)へと切り出すため、メンテナンス性が向上
  • Spring AOPを利用したトランザクション管理
    • トランザクション管理はフレームワークにお任せ

 Webアプリケーションを作成しながら、これらの特徴を理解していきましょう。

HSQLDBへユーザ情報を登録/参照するサンプル≫

 今回作成するサンプルWebアプリケーションの仕様は下記のとおりです。

  • USER_LISTテーブルへ1レコードを追加する
  • 追加したレコードの情報を画面に表示させる
  • DBアクセス時にエラーが発生した場合は業務ロジック単位でロールバックする

 連載第2回で作成したアプリケーションと比較して、画面周りには変更がありませんが、業務ロジック内にて、TERASOLUNAフレームワークのDAOを利用したDBの更新/参照処理があります。

図1 DAOを利用した更新/参照処理 図1 DAOを利用した更新/参照処理

TERASOLUNAフレームワークの主要なファイル

 TERASOLUNAフレームワークを構成する主要なファイルの一覧は、以下のとおりです。連載題2回に掲載した表に「SQL設定ファイル」「DAO入出力クラス」を追加したものです。それぞれのファイルの役割については、実際にサンプルアプリケーションを作成しながら説明していきたいと思います。

名称 ファイル名 概要
業務入出力ファイル
【TERASOLUNA】
blogic-io.xml アクションフォームなどのプレゼンテーション層のオブジェクトと業務ロジックの入出力DTO(Data Transfer Object)間のマッピング情報を設定
Struts設定ファイル
【Struts】
struts-config.xml Strutsの設定を行う。主に、遷移先パス情報を記述
Bean定義ファイル
(アプリケーション全体)
【Spring Framework】
applicationContext.xml オブジェクトと、オブジェクト間の依存性を定義するSpring Frameworkの設定ファイル。アプリケーション全体の設定に関係するオブジェクトを定義
Bean定義ファイル
(業務個別)
【Spring Framework】
moduleContext.xml オブジェクトと、オブジェクト間の依存性を定義するSpring Frameworkの設定ファイル。アクションや業務ロジックなど、業務個別のオブジェクトを定義
JSP
【サーブレット/JSP】
xxx.jsp 動的な画面を生成
業務入出力クラス Xxx.java(POJO) 業務ロジックとアクション間で引き渡す値を保持するDTOクラス
業務ロジッククラス
【TERASOLUNA】
XxxBLogic.java 業務処理クラス。TERASOLUNAフレームワークが規定するBLogicインターフェイスを実装
SQL設定ファイル
【iBATIS】
sqlMap.xml 業務プログラマが作成するSQL文を記述するファイル。このファイルに記述したSQL文は、TERASOLUNA DAOを利用して業務ロジックから実行できる
DAO入出力クラス Xxx.java(POJO) 業務ロジックとDAO間で引き渡す値を保持するクラス
web.xml(配備記述子)
【サーブレット/JSP】
web.xml Webアプリケーション全体を設定
表1 TERASOLUNAフレームワークの主要なファイル一覧(【】は依存するフレームワーク、再掲して一部情報追加

DBのテーブルの仕様

 DBのテーブルの仕様は下記です。画面から入力されたデータを格納し、また格納されたデータを参照します。

フィールド名 データ型 サイズ 主キー
ID VARCHAR 50
NAME VARCHAR 50 ×
表2 USER_LISTテーブルの仕様

接続するDBの起動と設定

 DBとして、JavaでできたオープンソースのHSQLDBを利用します。TERASOLUNAフレームワークのダウンロードサイト「http://sourceforge.jp/projects/terasoluna/releases/」からterasoluna-server4jweb-tutorial_2.0.1.0.zipをダウンロードし、解凍します。tutorial-thinディレクトリの直下にhsqldb.zipがありますので解凍し、任意のディレクトリ(例えば、c:\)に配置してください。「c:\hsqldb\terasoluna\startDB.bat」を実行してDBを起動します。

 続いて、正しく起動しているか確認します。「c:\hsqldb\terasoluna\startDBManager.bat」を実行します。HSQL Database Managerが起動し、connect画面が表示されるので、以下の表の入力パラメータに対応する値を入力します。DBの設定は下記のとおりです。

入力パラメータ
Type HSQL Database Engine Server
Driver org.hsqldb.jdbcDriver
URL jdbc:hsqldb:hsql://localhost/terasoluna
User sa
Password なし
表3 入力パラメータと値

 DBの接続後、下記のように表示されることを確認します。

図2 HSQL Database Managerの画面 図2 HSQL Database Managerの画面

 HSQL Database Managerの画面でUSER_LISTテーブルを作成します。下記のSQLを入力し、Executeボタンを押下します。メニューの[View]→[Refresh Tree]を実行し、USER_LISTテーブルが追加されていることを確認します。

create table user_list(
    ID varchar(50) primary key,
    NAME varchar(50)
)
リスト1 USER_LISTテーブル作成SQL

 TomcatへHSQLDBのライブラリを追加します。「c:\hsqldb\lib\hsqldb.jar」を「【Tomcatのインストールディレクトリ】\common\lib」へ配置してください。

Eclipseプロジェクト内のDB接続設定

 Eclipseプロジェクトは連載第2回で利用したEclipseプロジェクト(terasoluna-sample)を引き続き利用します。導入手順や、Eclipseプロジェクトの構成は連載第2回を参照してください。

 HSQLDBに接続するためのデータソース接続設定はEclipseプロジェクト(terasoluna-sample)内の「webapps/META-INF/context.xmlに下記のとおり記述してください。

<Context>
  <Resource
    name="jdbc/TerasolunaSampleDataSource"
    type="javax.sql.DataSource"
    driverClassName="org.hsqldb.jdbcDriver"
    password=""
    maxIdle="2"
    maxWait="5000"
    username="sa"
    url="jdbc:hsqldb:hsql://127.0.0.1:9001/terasoluna"
    maxActive="4"/>
</Context>
リスト2 context.xml(HSQLDBのデータソース接続設定)

 それでは、次ページ以降で実際にTERASOLUNAフレームワークを利用したサンプルWebアプリケーションを作っていきましょう。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。