データアクセス/ビジネスオブジェクトにActiveRecordパターンを使用することの欠点は何ですか?私が頭の外から考えることができる唯一のことは、それが単一責任原則に違反しているということですが、ARパターンは十分に一般的であり、この理由だけではそれを使用しないことを正当化する「十分」ではないようです(もちろん私のビューは、以下で符号Iの作業の多くの場合、いずれもため斜めであってもよい任意)SOLID原理を。
個人的にはActiveRecordのファンではありません(Ruby on Railsアプリケーションを書くことは例外で、ARは「自然」だと感じます)。処理します。ビジネスオブジェクトを返すリポジトリを使用することを好みます。私が扱うコードのほとんどは、ActiveRecordのバリエーションを使用する傾向があります(メソッドがブール値である理由がわかりません)。
public class Foo
{
// properties...
public Foo(int fooID)
{
this.fooID = fooID;
}
public bool Load()
{
// DB stuff here...
// map DataReader to properties...
bool returnCode = false;
if (dr.HasRows)
returnCode = true;
return returnCode;
}
}
またはpublic static Foo FindFooByID(int fooID)
、ファインダやpublic void Save()
保存/更新の方法に沿った何かのためのメソッドを持つ、より「伝統的な」方法です。
ActiveRecordは一般的に実装と使用がはるかに簡単ですが、複雑なアプリケーションには少し単純すぎるようで、データアクセスロジックをリポジトリにカプセル化することでより堅牢なアーキテクチャを実現できますデータアクセス戦略。たとえば、ストアドプロセッサ+データセットを使用していて、LINQなどに切り替えたい場合
ActiveRecordがジョブの最適な候補であるかどうかを判断する際に考慮すべきこのパターンの他の欠点は何ですか?