RailsのActiveRecordってなんでいいんだっけ?ということを見つめ直す。
そもそもActiveRecordパターンとは
Martin FowlerのPatterns of Enterprise Application Architecture(通称 PofEAA)にて紹介されたデザインパターン
An object that wraps a row in a database table or view, encapsulates the database access, and adds domain logic on that data. -P of EAA: Active Record
機械+意訳すると
データベーステーブルまたはビューの行をラップし、データベースアクセスをカプセル化し、そのデータにドメインロジックを追加するオブジェクト。
ということで、DBのテーブル定義とクラスを1対1で紐付けて、SQLでできる動作をそのクラスに実装する感じになる。
強みと弱み
強み
弱み
- 密結合のため、テーブルの構造変化に順応しなければならないし、RDBの制約と密に連動してしまうので、切り離しが困難
- モデルが複数のRDBのテーブルを参照してデータを作り出すケースの場合表現が困難
- 密結合のため、モデルの内容が多様化し、モデル=テーブルが維持できなくなってくると破綻する