Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

S2DaoでXMLレスなO/Rマッピングを行う

S2Daoを用いてパフォーマンス・保守性の高いDaoを構築する

  • LINEで送る
  • このエントリーをはてなブックマークに追加

Dao(Data Access Object)とは業務システムで良く利用されるデータベースにアクセスするパターンです。本稿では、このDaoの実装に有効な「S2Dao」というO/Rマッピングツールについて紹介します。

目次

はじめに

 Dao(Data Access Object)とは、業務システム開発でよく利用されるデータベースアクセスパターンです。本稿では、このDaoの実装に有効な「S2Dao」というO/Rマッピングツールについて紹介します。

対象読者

 Javaにて開発を行っていて、データベースプログラミングやO/Rマッピングに興味をある方を対象としています。

必要な環境

 このサンプルはJ2SE Development Kit 5.0 Update 6と、オープンソースデータベース「HSQLDB」のバージョン1.7.3にて動作確認をしています。

 S2Daoの最新版は、Seasarファウンデーションのホームページからダウンロードすることができます。なお、本稿のサンプルソースには、S2Daoのバージョン1.0.29とS2Daoが必要とするライブラリを同梱しています。

S2Daoの特徴

 S2Daoとは、Seasarファウンデーションが開発を進めているオープンソースのO/Rマッピングツールです。S2Daoの主な特徴は次の3つです

ソースコードがシンプル

 S2DaoではXMLのマッピングファイルが不要なため、ソースコードの量を減らすことができます。一般的なO/Rマッピングツールではテーブルとクラスを関連づけるための単調なマッピングファイルを書かなければいけませんが、S2Daoではクラスやプロパティの名前を意識して設計することで、ソースコードをシンプルにすることができます。

チューニング・保守を行いやすい

 O/Rマッピングツールを利用したシステムでは、まれにパフォーマンスが問題になることがあります。これはO/Rマッピングツールが内部でSQLを生成し実行するためで、データベースの集計関数やチューニング済みのSQLの利用が難しいことが原因です。しかしS2Daoでは、外部ファイルとして用意したSQLを実行させることが可能なため、チューニングを容易に行うことができます。しかも、外部ファイルという性質上、SQLの修正も容易にできます。

テスト・デバッグが簡単

 データベースアクセスのプログラムを作るときには、SQL Plus(Oracleのクライントツール)やDatabaseManager(HSQLDBの管理ツール)といったSQL実行環境で作成したSQLを、プログラムに埋め込むことが一般的です。S2Daoでは、作成したSQLをそのまま外部SQLファイルとして使用することができます。パラメータや条件などが必要であればSQLコメント(/*~*/)と呼ばれる仕組みによって対応することができます。さらにS2Daoでは実行したSQL文がログとして出力されます。PreparedStatementにおける「?」は表示されず、実行したSQLがそのまま表示されるため、デバッグも容易に行うことができます。

サンプルアプリケーションの概要

 本稿のダウンロードサンプルはシンプルなJavaアプリケーションです。当サンプルを実行する前に、「dbServerStart.bat」をダブルクリックしてHSQLDBのデータベースを起動しておいてください。「サンプル実行.bat」をダブルクリックしてサンプルを実行すると、mainメソッドが呼び出されます。サンプルでは、HSQLDBへの追加・更新・参照・削除といった基本的なデータベースアクセスを行い、その結果をコンソールに出力します。

テーブルの構成

 サンプルでは、書籍情報を保持する「Book」テーブルを使用します。レイアウトは次の通りです。

テーブルレイアウト
列名桁数説明
ID数値型8ID(主キー)
TITLE文字列型50書籍名
PRICE数値型8価格
EDITDAY日付時刻型8更新日

ファイル構成

 サンプルアプリケーションのファイル構成は、下図のようになっています。主要なファイルの詳細については、この後で解説していきます。

ファイル構成
ファイル構成
サンプルアプリケーションの主要ファイル説明
ファイル名概要
Book.java「Book」テーブルのデータを格納するEntityクラス
BookDao.java「Book」テーブルを操作するDaoインターフェース
Main.javaEntityとDaoを使用するクラス
BookDao.diconBookDaoの設定ファイル
dao.diconS2Daoの設定ファイル
j2ee.diconデータベースに関する設定ファイル
log4j.propertiesログ出力に関するlo4jの設定ファイル

  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • WINGSプロジェクト 青木 淳夫 (株式会社ネクストスケープ)(アオキ アツオ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5