Saya telah melihat banyak konfigurasi untuk mempertahankan informasi ke database. Secara umum, tiga jenis desain tampak umum di sudut dunia saya:
- Pengendali mengelola kegigihan
- Model mengelola kegigihan
- Perpustakaan pihak ketiga mengelola kegigihan, biasanya memerlukan semacam anotasi pada model.
Saya bertanya-tanya konfigurasi mana (jika ada) yang, secara konsep, yang paling mudah digunakan / paling kompatibel dengan arsitektur MVC?
(Jika bukan yang saya daftarkan, tolong berikan garis besar / ikhtisar sebagai bagian dari jawaban)
Secara realistis, MVC sebagian besar merupakan pola implementasi UI, jadi pertanyaannya agak diperdebatkan. Namun, sebenarnya hanya ada dua opsi gambaran besar. Pengontrol Anda biasanya mengirimkan permintaan untuk memuat atau menyimpan entitas dalam model Anda menggunakan 1) lapisan layanan atau 2) pola Rekaman Aktif.
Lapisan layanan dapat mengambil salah satu dari sejumlah bentuk, meskipun preferensi pribadi saya adalah untuk bekerja dengan abstraksi repositori untuk entitas akar agregat, implementasi konkret yang baik akan bekerja dengan semacam ORM, atau DAO ringan, atau API untuk beberapa toko non-relasional jika itu masuk akal untuk aplikasi tersebut.
Pola Rekaman Aktif berarti bahwa model Anda memiliki tanggung jawab untuk kegigihan, meskipun biasanya berarti kelas dasar dari beberapa jenis mengelola pemetaan ke toko Anda, sehingga model Anda tidak benar-benar terlibat secara langsung.
Pada dasarnya, controller mengirimkan permintaan untuk tetap objek, apakah itu panggilan ke repositori Anda, implementasi UnitOfWork Anda, atau metode Simpan di entitas Anda. Jika Anda menggunakan repositori, objek model Anda tidak tahu apa-apa.
sumber
Dalam sistem MVC (model-view-controller), model berisi data. Jadi saya percaya, ketekunan database harus ada di dalamnya.
sumber
Sebagian besar sampel MVC tingkat tinggi yang saya lihat memiliki
infrastructure
lapisan terpisah yang memiliki kode implementasi basis data aktual (yaitu panggilan khusus ke NHibernate, atau EF atau Linq atau apa pun lapisan data Anda), sedangkan lapisan "model" (sering juga layer "Domain") memiliki antarmuka yang menentukan layanan data.sumber
Praktik standar dalam MVC adalah memasukkan struktur data dan kegigihan dalam lapisan M (odel).
Lapisan model tidak hanya menyertakan kelas (POCOs dll) yang akan Anda gunakan dalam aplikasi Anda. Mereka termasuk repositori untuk kelas-kelas itu.
Contohnya adalah repositori tempat Anda memiliki banyak instance kelas data, yaitu:
Anda akan dapat mengatur domain model Anda dengan lebih baik, dan juga memiliki akses ke data Anda melalui banyak cara, tetapi lapisan data / model akan tetap kompak dan kuat
sumber