DAO – Mapper – Entity – načítání
- bene
- Člen | 82
Zdravím,
řeším problém s DAO (Repository), Mapperem a načítaním entit.
Uvažujme příklad:
Máme tabulky user
a category
, kde
user
patří do nějaké category
.
category
má sloupec is_important
.
Pak existují entity User
a Category
. Každá
entita má svůj mapper a DAO. V DAO pro kategorie je využívaná cache, kde
když jsou data v cache tak je beru z ní, jinak je vezmu z mapperu a do
cache uložím.
Entita User
má metodu isImportant(
), která je
obrazem Category::isImportant()
. Na výpisu uživatelů pak chci
volat jen $user->isImportant()
. Ovšem naplnění tohoto sloupce
chci z cache, tzn. s DAO pro kategorie.
Tudíž jaké je nejčistší/optimální řešení abych mohl v
UserMapper
mít přístup ke kategoriím z cache.
JOIN není povolen (není důležité proč) !!!
Napadá mě několik variant:
- Předat v konstruktoru
UserMapper
DAO na kategorie (toto řešení mi umožnuje volatgetAll()
aniž bych musel cokoliv přidávat do parametrů, ale moc se mi nelíbí, vzniká zbytečná závyslost a otazkou je jestli je to vůbec čisté řešení) - Předat v metodě
UserMapper::getAll()
DAO na kategorie (závyslot už nemá celý mapper, ale jen jedna metoda, z hlediska čistoty řešení se mi to ale taktéž nezdá) - Předat v metodě
UserMapper::getAll()
rovnou kategorie načtené z DAO (asi nejčistší řešení, ale mám zbytečný parametr, nutná ošetření, atp. Otázkou je jestli nějaký mapper může mít z hlediska čistého návrhu přístup k jiným entitám)
Nejaké jiné návrhy?
Dík za názor