Czytam oficjalną Twoją pierwszą aplikację opartą na NHibernate .
Chociaż samouczek jest dobry i łatwy do naśladowania, zastanawiam się, dlaczego użyto wzorca repozytorium.
W różnych Add
, Update
, Remove
metody w ProductRepository
realizacji, kod jest prawie identyczne - wszystkie są z wykorzystaniem transakcji, a różnica jest w „mięsie”, czyli wezwanie session.Save
int Add
metoda, session.Delete
w remove
metodzie. ( Na stronie brakuje kotwic HTML, ale można przeszukiwać stronę dla odpowiedniego kodu podobnego public void Remove
,public void Add
)
Ten kod po prostu „czuje się źle”.
Dlaczego autor używa wzorca Repozytorium - czy to tylko w celu demonstracji użycia NHibernate, czy jest to wymagane lub z innego powodu?
Ps. Moje tło pochodzi z Ruby on Rails przy użyciu ActiveRecord, więc staram się zrozumieć, jak działa / jest używany NHibernate.
źródło
Odpowiedzi:
Wzorzec repozytorium nie jest wymagany. Podobnie jak w przypadku wszystkich innych wzorów, jest to decyzja „architektoniczna”, którą należy podjąć w związku z potrzebami biznesowymi. Ogólnie wzorzec repozytorium służy do implementacji „Ingorance Persistance Persistance”, co oznacza, że twoje podmioty nie wiedzą nic o tym, jak zachować się na urządzeniu przechowującym (baza danych, XML, plik tekstowy itp.). Jeśli na przykład masz adres jednostki, nie będzie on zawierał logiki trwałości (nie znajdziesz nigdzie czegoś takiego jak adres.Save lub address.Update), ale przekażesz swoją jednostkę do metody repozytorium, która jest odpowiedzialna za zachowanie zmiany
źródło
Zaletą użycia wzorca repozytorium jest wyśmiewanie warstwy dostępu do danych, aby można było przetestować kod warstwy biznesowej bez wywoływania kodu DAL. Są inne duże zalety, ale wydaje mi się to bardzo istotne.
źródło