DAO – Mapper – Entity – načítání

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
bene
Člen | 82
+
0
-

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 volat getAll() 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