アクティブレコード(ActiveRecord)パターン(PofEAA)

参考書籍一覧(Amazon アソシエイトリンク)

テーブルの1行と1つのインスタンスが対応し、ドメインロジックを記述するクラスを作成するパターン。

有名な実装例はRailsのActiveRecordがあげられる。

肝要なのは、ドメインロジックを記述するクラスであるという点である。もし、一切ドメインロジックを持たないのであれば、それは行データゲートウェイになる。逆にいえば、アクティブレコードと行データゲートウェイはそれだけの違いでしかないと言える。

モデリング結果としてのドメインモデルと物理データモデル(RDBのテーブル)がほぼほぼ一致していて、簡単なドメインロジックのみで構成されるのであれば、アクティブレコードパターンを適用しても問題はないはずである。

ただし、テーブルに紐づいているために単一責任の原則に違反しやすく、オブジェクトの関連がテーブルの関連に引きづられてしまう。

問題が顕在化し始めたら、ドメインロジックの実装をドメインモデルパターンに移行し、アクティブレコードから行データゲートウェイへシフトしていくのが良いだろう。

行データゲートウェイのデータをドメインモデルにマッピングする方法については、ドメインモデル(DomainModel)パターンを参照。