ビープラウド社長のブログ

株式会社ビープラウドの社長が、日々の思いなどを綴っていきます。

BP Study#15 ORマッパー対決2008 〜 PofEAA編

11月28日に開催されたBP Study#15 「ORマッパー対決2008」でまず冒頭で私が、Enterprise Application ArchitectureパターンとORマッパーというタイトルで、説明をさせていただきました。

資料はこちら
http://www.beproud.jp/doc/BPStudy15_sato.pdf

■O/Rマッパーとは
ObjectとRDBマッピングさせるライブラリ/フレームワーク

■O/Rマッパーが生まれた流れ
・DBアクセスのプログラムに発生しがちな問題その? 保守性の低下
SQLが、ソース内に散在、重複コードの大量生産

・DBアクセスのプログラムに発生しがちな問題その? 品質の低下
決まりきったコードを人手でコーディングすることによる不具合の混入

・DBアクセスのプログラムに発生しがちな問題その? 生産性の低下

決まりきったコードを何度も書くことによる開発効率・スピードの低下


■解決のために
パターン化されたものを共通化/汎用化


・クエリ結果レコードセットのオブジェクトへの格納
・オブジェクト値のSQLバインド変数へのセット
トランザクション制御
・コネクションのオープン/クローズ
SQL自動生成
→O/Rマッパーの誕生

エンタープライズアプリケーションのパターン化プレゼンテーション層、ドメイン層などでも、共通化、フレームワーク化が進んだ

■Enterprise Application Architecture Patternの紹介
・著者マーチン・ファウラー
・2002年出版(日本語版2005年)
・レイヤ化手法のパターン化


■データソースのアーキテクチャに関するパターン

・テーブルデーゲートウェイ

・行データゲートウェイ

・アクティブレコード

・データマッパー

■テーブルデーゲートウェイ

・テーブルとマッピング

・find系メソッドはレコードセットを返す

■行データゲートウェイ

・テーブル/ビューの1行に対応

ビジネスロジックは実装されない

■アクティブレコード

・テーブル/ビューの1行に対応

・DBアクセスをカプセル化

ビジネスロジックが実装される

■データマッパー

ドメイン設計したクラス群とERモデルを関連付ける

■アクティブレコードとデータマッパーの違い

・RDBのテーブルと1対1にEntityがマッピングするのがアクティブレコード

オブジェクト指向に、より忠実なのがデータマッパー

 (ほとんどのケースは、RDBのテーブルと1対1にEntityがマッピングする)

■多対多のモデルを考える

・クラス概念設計で、多対多のモデルはERモデルでは、マスタテーブルに加え、関連テーブルが用意され、表現される

・アクティブレコードの場合

クラスとテーブルが1対1でマッピングする

・データマッパーの場合

分析モデルがそのまま物理クラスモデルとなる

(関連テーブル用のモデルは不要)

■まとめ

・P of EAAを学ぶと、技術の背景がわかり、技術選択の際に役立つ

・アプリケーション・アーキテクチャ設計時のセンスが身につく

(※)スライドから、O/RマッパライブラリをPofEAAに分類したスライドは外しました。

PofEAAが発表されたのが2002年であり、そこから実装理論も発展してきており、それぞれのO/Rマッパーを厳密に分類できるわけではなさそうと判断したからです。


今年の目標:100エントリーまであと8