SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

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

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


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

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の設定ファイル

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
S2Daoのコーディング手順

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
特集記事連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 青木 淳夫(アオキ アツオ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

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

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/303 2006/12/22 18:44

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング