Saya membaca aplikasi resmi berbasis NHibernate pertama Anda .
Meskipun tutorialnya bagus dan mudah diikuti, saya bertanya-tanya mengapa pola Repositori digunakan.
Dalam berbagai Add
, Update
, Remove
metode dalam ProductRepository
pelaksanaan, kode ini hampir identik - mereka semua menggunakan transaksi, dan perbedaannya adalah di "daging" yaitu panggilan session.Save
int Add
metode, session.Delete
dalam remove
metode. ( Halaman tidak memiliki jangkar HTML, tetapi Anda dapat mencari kode yang relevan seperti halaman public void Remove
,public void Add
)
Kode itu hanya "terasa salah".
Mengapa penulis menggunakan pola Repositori - apakah hanya untuk demonstrasi menggunakan NHibernate atau apakah itu diperlukan atau karena alasan lain?
Ps. Latar belakang saya berasal dari Ruby on Rails menggunakan ActiveRecord jadi saya mencoba memahami bagaimana NHibernate bekerja / digunakan.
sumber
Jawaban:
Pola penyimpanan tidak diperlukan. Adapun semua pola lainnya adalah keputusan "Arsitektur" yang harus Anda buat terhadap kebutuhan bisnis Anda. Secara umum Pola repositori digunakan untuk mengimplementasikan "Entity Persistance Ingorance" yang berarti bahwa entitas Anda tidak tahu apa-apa tentang cara bertahan di perangkat penyimpanan Anda (Database, XML, TextFile, dll). Jika misalnya Anda memiliki Alamat entitas, itu tidak akan berisi logika persistensi (Anda tidak akan menemukan sesuatu seperti address. Simpan atau alamat. Di mana saja) tetapi Anda akan meneruskan entitas Anda ke metode repositori yang bertanggung jawab untuk tetap menggunakan perubahan
sumber
Keuntungan menggunakan pola repositori adalah dengan mengolok-olok lapisan akses data Anda, sehingga Anda dapat menguji kode lapisan bisnis Anda tanpa memanggil kode DAL. Ada keuntungan besar lainnya tetapi ini tampaknya sangat vital bagi saya.
sumber