※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

データアクセス層はRDBへのアクセスをビジネス層から隠蔽し、ビジネスロジックに必要なデータをRDBから取得しobjにmappingするもの。

プレゼンテーション層同様、データアクセス層もオープンソースのDBアクセスフレームワークを利用するのが一般的。

O/Rマッピング
オブジェクト指向分析でエンティティを抽出し、そのエンティティを基に設計段階でテーブルを作成するもの

R/Oマッピング
システムのデータ分析をDOA(データ中心アプローチ)などで行いテーブルを作成した場合や、システム開発以前にすでにテーブルが存在している場合に利用する

DBアクセスフレームワークの種類
一般的に知られているのはORM(O/RMapper)
ORMは、XMLなどで記述されたマッピングファイルによってobjとTBLのマッピングを行う。
マッピングファイルを記述するのは手間がかかるが開発者はSQL文を意識しないで良いのが特徴。

ORMの代表的なフレームワーク
  • Hibernate
  • Torque(ApacheDBプロジェクト)
  • JDO(Java標準)

直接SQLを使用することを前提としたDBアクセスフレームワーク
  • Springに含まれるSpringJDBC抽象化フレームワーク
  • MapをベースとしたiBATIS
  • (フレームワークじゃないが)JDBCを使用したDBアクセスユーティリティであるJakarta Commons DBUtils

データアクセス層の設計指針
上記のようなフレームワークを利用すると本来は設計で考慮すべき以下の点が含まれている。

Connectionプーリングを利用する
→Connectionを利用するたびに生成したり解放したりするのはめんどう。一般的なDBアクセスフレームワークではConnectionプーリングが利用できるようになっている

RDBが変わったときに実装に影響がないようにする
→設定ファイルで利用するRDBを指定するので変更になっても実装には影響がない

利用するRDBに依存したSQL文を記述しない
→O/Rマッピングでは設定ファイルで設定されたRDBによって出力されるSQL文が変わる。
直接SQL文を記述するタイプのDBアクセスフレームワークではそれができないので記述する際はRDBに依存しなSQL文を書くよう注意が必要。

特に注意すべきなのはインクリメンタルなprimaryKeyの生成方法と現在日時などを取得する関数などベンダに依存してしまう機能