1.DAO とは
DAO (Data Access Object) は Java 言語の開発元であるサン・マイクロシステムズ社が提唱するサーバサイド Java の開発指針とも言うべき J2EE パターンのひとつである
DAO パターンを元にした Okapi Project 内のデータベースアクセスのために特化したフレームワークです。
本来 DAO はデータベースだけではなく XML などへのアクセスもサポートする部分ですが、現時点の Okapi Project 内の DAO はデータベースのみを対象としています。
1.2.DAO の種類
Okapi Project では現在 2 種類の DAO が存在しています。ここではその 2 種類の概要を説明します。
1.2.1.DAO Pro
Web アプリケーションの自動生成機能などを持つ xframe で使われているのが DAO Pro です。DAO Pro の構造は次の図のようになっています。
DAO Pro には大きく分けて 2 通りの機能が用意されています。
ひとつは上図の上段に示されている FreeDbAccess です。これは図にある通りデータベースのカラム構成などを定義した定義情報を読み込み SQL 文を生成し、データベースへアクセスする機能です。使用する側(上図では Web AP )はどのテーブルに対してのアクセスか、データベースに対する値、アクセスの種類(検索、更新など)を指定するだけで SQL などを意識しないでデータベースへアクセスすることが可能になります。FreeDbAccess はデータベースのプライマリキーに対するアクセスのみをサポートしており、特定の条件によって様々なデータベースアクセスを行うことには利用することができません。
複雑なデータベースアクセスを実現するためには上図の下段に示された CommonDbAccess の機能を利用する。CommonDbAccess では、あらかじめアプリケーション開発者より提示されたアクセス条件に基づいて SQL 文を文字列編集するプログラムを作っておき、利用者がアクセス条件に該当するパラメータを指定して目的のデータベースへアクセスするという仕組みを持ちます。
1.2.2.DAO Lite
Okapi Project の中核のフレームワークにて利用される DAO Lite は、DAO Pro とは対象的に J2EE パターンのひとつ
DAO パターンに忠実に基づいた設計を行っています。DAO パターンのひとつの目的として、「アクセス対象(Object)の切り替え」という問題をある程度解決しています。つまり、アクセスするものがデータベースなのか、XML なのか、の切り替えを柔軟に行うための機構を持っているのです。これはデータベースだけについてみれば、DBMS の切り替えに特化していると言うことができます。
DAO Lite は上述したように、アクセス対象を柔軟に切り替えるための機構を持つため比較的機械的なコーディングを大量に行います。そのため DAO パターンの解説でも可能な限りコーディングはツールによる自動生成を推奨しています。DAO Lite では DAO Tool という Java の Swing ベースのツールを用意し、MS-Excel で作成した DB 定義(DB 設計において一般的に作られるカラム構成と同等)を元に CSV ファイルを作成し、その CSV ファイルから Java ソースと DB 生成のための Create 文を自動出力するようにしています。
これにより設計段階で DB 定義を作ってしまうことで基本的な資材はそろってしまうことになり非常に開発効率が上がります。DAO Pro と同様に、複雑なアクセスについては独自でコーディングが必要なものの、FreeDbAccess 相当のコーディングはツールによる自動生成によってカバーされます。