ActiveRecord型のORMの問題は、凝集度の観点から説明できる。
ビジネスロジックを持ち、DBアクセスを管理し、さらにテーブルまで定義するというのは明らかに責務過剰なのだ。
だからどうするかというと、「ActiveRecord使うな」ではなく、「ビジネスロジックを引き剥がせ」。
DDDのアーキテクチャでは、ビジネスロジックはドメインオブジェクトに、DBアクセスはインフラ層のリポジトリの実装クラスに。ORMはこのリポジトリ実装クラス内に閉じ込めればいいのです。
凝集度、凝集度なのじゃよ
つまり、ActiveRecordは完全にDAOとして扱えということでこれは支持する。
一方、ActiveRecordの利用に慣れてる人々は受け入れがたいと思うのだ。