Saya ingin tahu apa kelemahan menggunakan pola ActiveRecord untuk akses data / objek bisnis. Satu-satunya yang dapat saya pikirkan adalah bahwa hal itu melanggar Prinsip Tanggung Jawab Tunggal, tetapi pola AR cukup umum sehingga alasan ini saja sepertinya tidak "cukup baik" untuk membenarkan tidak menggunakannya (tentu saja saya pandangan mungkin miring karena sering kali tidak ada kode yang saya gunakan dengan mengikuti salah satu prinsip SOLID).
Secara pribadi saya bukan penggemar ActiveRecord (dengan pengecualian menulis aplikasi Ruby on Rails, di mana AR terasa "alami") karena rasanya seperti kelas melakukan terlalu banyak, dan akses data tidak boleh sampai ke kelas itu sendiri untuk menangani. Saya lebih suka menggunakan Repositori yang mengembalikan objek bisnis. Sebagian besar kode yang saya gunakan cenderung menggunakan variasi ActiveRecord, dalam bentuk (Saya tidak tahu mengapa metode ini adalah boolean):
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;
}
}
atau kadang-kadang cara yang lebih "tradisional" untuk memiliki public static Foo FindFooByID(int fooID)
metode untuk para pencari dan sesuatu public void Save()
untuk menghemat / memperbarui.
Saya mendapatkan bahwa ActiveRecord biasanya jauh lebih sederhana untuk diimplementasikan dan digunakan, tetapi tampaknya sedikit terlalu sederhana untuk aplikasi yang kompleks dan Anda bisa memiliki arsitektur yang lebih kuat dengan merangkum logika akses data Anda dalam Repositori (belum lagi memiliki lebih mudah untuk swap keluar strategi akses data mis. mungkin Anda menggunakan Stored Procs + DataSets dan ingin beralih ke LINQ atau sesuatu)
Jadi apa kelemahan lain dari pola ini yang harus dipertimbangkan ketika memutuskan apakah ActiveRecord adalah kandidat terbaik untuk pekerjaan itu?