/note/social
O/Rマッピングとは
- リレーショナル・データモデルとオブジェクト・モデルをマッピングするプログラミング技法
- RDBから取得したレコードのデータを対応するオブジェクトにマッピングする(インスタンスを生成する)程度の意味
O/Rマッパーとは
- O/Rマッピングを実現するプログラム(ライブラリ)
- したがって、O/Rマッパーの機能の最小構成要素は、オブジェクトと(RDBの)レコードのデータのマッピングである
Active Recordとは
- エンタープライズ・アーキテクチャパターン(PoEAA)で紹介されたO/Rマッパーの実装パターンの一種
- クラスは1つのテーブルを表す
- インスタンスはテーブルの1行を表す(モデル=テーブルの1行)
- クラス、インスタンスメソッドでデータ処理を行う
実装としてのActive Recordの役割(RoR)
- スキーマ・マネージャ&マイグレーション
- クエリビルダ
- DBアクセス
- ファクトリ(モデルのインスタンス生成)
- リポジトリ(DBの隠蔽&データアクセスの抽象化)
- エンティティ
DjangoのORM
- ActiveRecordパターンを採用したO/Rマッパー
- RoRのそれと同じもの
O/Rマッパーに関する注意事項
- O/Rマッパー=ActiveRecordではない(PoEAAでも別のパターンは紹介されている)
- O/Rマッパーの機能=クエリビルダではない(ActiveRecordパターンの特性上、密結合になっているだけで本質的には別種のライブラリ)
DDDとActiveRecordに関する注意事項
- ActiveRecordパターンは「モデル」がリポジトリ/ファクトリ/エンティティを兼任するので、どの役割についての話をしているのか誤解が生じやすい。議論の際は、文脈をはっきりさせることが重要。
Active Record参考資料
(2016/04/05)