「データアクセス層の役割」の編集履歴(バックアップ)一覧はこちら

データアクセス層の役割」(2005/09/12 (月) 09:56:15) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

データアクセス層はRDBへのアクセスをビジネス層から隠蔽し、ビジネスロジックに必要なデータをRDBから取得しobjにmappingするもの。<br> <br> プレゼンテーション層同様、データアクセス層もオープンソースのDBアクセスフレームワークを利用するのが一般的。<br> <br> <b style="color: rgb(0, 153, 0);">O/Rマッピング</b><br> オブジェクト指向分析でエンティティを抽出し、そのエンティティを基に設計段階でテーブルを作成するもの<br> <br> <b style="color: rgb(0, 153, 0);">R/Oマッピング</b><br> システムのデータ分析をDOA(データ中心アプローチ)などで行いテーブルを作成した場合や、システム開発以前にすでにテーブルが存在している場合に利用する<br> <hr size="2" width="100%"> <b style= "color: rgb(255, 102, 0);">DBアクセスフレームワークの種類<br></b><span style="color: rgb(255, 102, 0);"><span style="color: rgb(0, 0, 0);">一般的に知られているのはORM(O/RMapper)<br> ORMは、XMLなどで記述されたマッピングファイルによってobjとTBLのマッピングを行う。<br> マッピングファイルを記述するのは手間がかかるが開発者はSQL文を意識しないで良いのが特徴。<br> <br> <b><span style= "color: rgb(51, 204, 0);">ORMの代表的なフレームワーク</span></b><br> </span></span> <ul> <li><span style="color: rgb(255, 102, 0);"><span style= "color: rgb(0, 0, 0);">Hibernate</span></span></li> <li><span style="color: rgb(255, 102, 0);"><span style= "color: rgb(0, 0, 0);">Torque(ApacheDBプロジェクト)</span></span></li> <li><span style="color: rgb(255, 102, 0);"><span style= "color: rgb(0, 0, 0);">JDO(Java標準)</span></span></li> </ul> <span style="color: rgb(255, 102, 0);"><span style="color: rgb(0, 0, 0);"><br> <b style= "color: rgb(51, 204, 0);">直接SQLを使用することを前提としたDBアクセスフレームワーク<br> </b></span></span> <ul> <li>Springに含まれるSpringJDBC抽象化フレームワーク</li> <li>MapをベースとしたiBATIS</li> <li> (フレームワークじゃないが)JDBCを使用したDBアクセスユーティリティであるJakarta Commons DBUtils</li> </ul> <hr size="2" width="100%"> <span style="color: rgb(255, 102, 0);"><span style= "color: rgb(0, 0, 0);"><b style="color: rgb(51, 204, 0);"><span style= "color: rgb(255, 102, 0);">データアクセス層の設計指針<br></span></b><span style="color: rgb(0, 0, 0);">上記のようなフレームワークを利用すると本来は設計で考慮すべき以下の点が含まれている。<br> <br> Connectionプーリングを利用する<br> →Connectionを利用するたびに生成したり解放したりするのはめんどう。一般的なDBアクセスフレームワークではConnectionプーリングが利用できるようになっている<br> <br> <br></span><br></span></span>
データアクセス層はRDBへのアクセスをビジネス層から隠蔽し、ビジネスロジックに必要なデータをRDBから取得しobjにmappingするもの。<br> <br> プレゼンテーション層同様、データアクセス層もオープンソースのDBアクセスフレームワークを利用するのが一般的。<br> <br> <b style="color: rgb(0, 153, 0);">O/Rマッピング</b><br> オブジェクト指向分析でエンティティを抽出し、そのエンティティを基に設計段階でテーブルを作成するもの<br> <br> <b style="color: rgb(0, 153, 0);">R/Oマッピング</b><br> システムのデータ分析をDOA(データ中心アプローチ)などで行いテーブルを作成した場合や、システム開発以前にすでにテーブルが存在している場合に利用する<br> <hr size="2" width="100%"> <b style= "color: rgb(255, 102, 0);">DBアクセスフレームワークの種類<br></b><span style="color: rgb(255, 102, 0);"><span style="color: rgb(0, 0, 0);">一般的に知られているのはORM(O/RMapper)<br> ORMは、XMLなどで記述されたマッピングファイルによってobjとTBLのマッピングを行う。<br> マッピングファイルを記述するのは手間がかかるが開発者はSQL文を意識しないで良いのが特徴。<br> <br> <b><span style= "color: rgb(51, 204, 0);">ORMの代表的なフレームワーク</span></b><br> </span></span> <ul> <li><span style="color: rgb(255, 102, 0);"><span style= "color: rgb(0, 0, 0);">Hibernate</span></span></li> <li><span style="color: rgb(255, 102, 0);"><span style= "color: rgb(0, 0, 0);">Torque(ApacheDBプロジェクト)</span></span></li> <li><span style="color: rgb(255, 102, 0);"><span style= "color: rgb(0, 0, 0);">JDO(Java標準)</span></span></li> </ul> <span style="color: rgb(255, 102, 0);"><span style="color: rgb(0, 0, 0);"><br> <b style= "color: rgb(51, 204, 0);">直接SQLを使用することを前提としたDBアクセスフレームワーク<br> </b></span></span> <ul> <li>Springに含まれるSpringJDBC抽象化フレームワーク</li> <li>MapをベースとしたiBATIS</li> <li> (フレームワークじゃないが)JDBCを使用したDBアクセスユーティリティであるJakarta Commons DBUtils</li> </ul> <hr size="2" width="100%"> <span style="color: rgb(255, 102, 0);"><span style= "color: rgb(0, 0, 0);"><b style="color: rgb(51, 204, 0);"><span style= "color: rgb(255, 102, 0);">データアクセス層の設計指針<br></span></b><span style="color: rgb(0, 0, 0);">上記のようなフレームワークを利用すると本来は設計で考慮すべき以下の点が含まれている。<br> <br> <b>Connectionプーリングを利用する</b><br> →Connectionを利用するたびに生成したり解放したりするのはめんどう。一般的なDBアクセスフレームワークではConnectionプーリングが利用できるようになっている<br> <br> <b>RDBが変わったときに実装に影響がないようにする</b><br> →設定ファイルで利用するRDBを指定するので変更になっても実装には影響がない<br> <br> <b>利用するRDBに依存したSQL文を記述しない</b><br> →O/Rマッピングでは設定ファイルで設定されたRDBによって出力されるSQL文が変わる。<br> 直接SQL文を記述するタイプのDBアクセスフレームワークではそれができないので記述する際はRDBに依存しなSQL文を書くよう注意が必要。<br> <br> 特に注意すべきなのはインクリメンタルなprimaryKeyの生成方法と現在日時などを取得する関数などベンダに依存してしまう機能<br> <br> <br> <br> <br></span><br></span></span>

表示オプション

横に並べて表示:
変化行の前後のみ表示:
記事メニュー
目安箱バナー