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