Správné užití repository patternu rubrika: Návrh

3 P19
položil/-a 9.2.2016

Zdravím,

na svých projektech (.NET, ale to je nepodstatné) používám pro vyzvedávání dat z databáze vlastní repository (pro objednávky mám OrderRepository, které dědí z RepositoryBase atd. kde mám DB kontext apod.).

Ovšem do této repository dopisuji i vlastní query (např GetOrdersForLastMonth).

Je tohle špatně? Teď jsem v jednom videu slyšel, že by to v repository nemělo být, ale já jsem se na repository v principu díval jako na místo, odkud získávám data (např. vše co se týká objednávek).

Co si o tom myslíte? Díky

odkaz
3 vrto
odpověděl/-a 12.2.2016

A ja vravim ze je to okej :)

TL;DR Existuje viacej moznosti ako implementovat Repository pattern, pouzite tu, ktora je vhodna pre vas problem.

V originalnej knizke Domain Driven Design od Erica Evansa sa chlapik rozpisal o Repository patterne.

Eric vravi, ze neexistuje ziadna dogmaticka implementacia Repository patternu, existuje niekolko moznosti ako ho implementovat. Jedna z moznosti su prave hardcodovane komplexne query.

Citacia:

All repositories provide methods that allow a client to request objects matching some criteria, but there is a range of options of how to design this interface.
The easiest REPOSITORY to build has hard-coded queries with specific parameters. These queries can be various: retrieving an ENTITY by its identity (provided by almost all REPOSITORIES); requesting a collection of objects with a particular attribute value or a complex combination of parameters; selecting objects based on value ranges (such as date ranges); and even performing some calculations that fall within the general responsibility of a REPOSITORY (especially drawing on operations supported by the underlying database).

Jedna z kniznic ktoru pouzivam uz dlhsie (programujem v Jave) je Spring Data JPA ktora ma abstrakciu prave Repository patternu a vedie ta cestou hardcodovanych query (pretoze kniznica sa postara o implementaciu ostatneho boilerplate kodu).

Pro zobrazení všech 6 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.