アクティブレコードパターンの本当の意味
PofEAAをみると、アクティブレコードは、「テーブルの行をオブジェクトでラップしたもの」で、データマッパーは、「データベースとオブジェクトを独立して設計しそれらを結びつけるもの」と書いているので、アクティブレコードパターンは勘違いされやすいかも。
アクティブレコードの定義を原文から持ってくると次のようになります。
重要なことは、アクティブレコードのオブジェクトは、データベースアクセスをカプセル化していることです。オブジェクトがデータアクセスの機能を提供していると言い換えてもいいでしょう。
An object that wraps a row in a database table or view,
encapsulates the database access, and adds domain logic on that data.
もっと具体的にいえば、エンティティクラスは、フレームワークで提供されているデータアクセス機能を持ったクラスを継承して作るということです。
Hibernteを使う場合だって、オブジェクトとテーブルの行を一対一に対応させて使うことは可能です。「テーブルの行をオブジェクトでラップしたもの」だからアクティブレコードパターンだと思うのは、危険です。
「エンティティクラスは、フレームワークで提供されているデータアクセス機能を持ったクラスを継承して作る」のがアクティブレコードパターンだと覚えているほうが、間違うことはありません。