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
UserMapperDAO 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