アクティブレコード(ActiveRecord)パターン(PofEAA)
参考書籍一覧(Amazon アソシエイトリンク)
テーブルの1行と1つのインスタンスが対応し、ドメインロジックを記述するクラスを作成するパターン。
有名な実装例はRailsのActiveRecordがあげられる。
肝要なのは、ドメインロジックを記述するクラスであるという点である。もし、一切ドメインロジックを持たないのであれば、それは行データゲートウェイになる。逆にいえば、アクティブレコードと行データゲートウェイはそれだけの違いでしかないと言える。
モデリング結果としてのドメインモデルと物理データモデル(RDBのテーブル)がほぼほぼ一致していて、簡単なドメインロジックのみで構成されるのであれば、アクティブレコードパターンを適用しても問題はないはずである。
ただし、テーブルに紐づいているために単一責任の原則に違反しやすく、オブジェクトの関連がテーブルの関連に引きづられてしまう。
問題が顕在化し始めたら、ドメインロジックの実装をドメインモデルパターンに移行し、アクティブレコードから行データゲートウェイへシフトしていくのが良いだろう。
行データゲートウェイのデータをドメインモデルにマッピングする方法については、ドメインモデル(DomainModel)パターンを参照。