Doctrine2 – EntityManager vs EntityDao

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

Dobrý deň, práve som začal používať Doctrine2 a jedna vec ma mätie a to aky je rozdiel medzi EntityManager a EntityDao? Na internete čo su tutorialy pre amaterov, tak všade spomínajú len EntityManager a tu na forume plus nejake open nette projekty používajú EntityDao a ja nechápem nejak rozdiel medzi nimi.

Bol by niekto taký ochotný a vysvetlil mi to v skratke?

David Matějka
Moderator | 6445
+
+3
-

EntityDao je „vynalez“ @FilipProcházka, ktery rozsiruje EntityRepository o moznosti ukladani (EntityRepository umoznuje pouze cteni), nicmene se to ukazalo jako slepa cesta, ktera jiz neni doporucovana

PhelixMad
Člen | 36
+
0
-

To som teda nevedel, Ďakujem.

Takze by som mal pouzivat entityManager + getRepository… ak správne chapem? :)

Filip Procházka
Moderator | 4668
+
+6
-

Viz https://github.com/…epository.md a https://github.com/…cs/en/dao.md

DAO bylo fajn na některý věci, ale když jsem viděl co s tím někteří dělají, neunesl jsem to a musel jsem to označit jako deprecated.

A pokud začínáš nový projekt, tak si nastav rovnou i

doctrine:
    defaultRepositoryClassName: Kdyby\Doctrine\EntityRepository
newPOPE
Člen | 648
+
+1
-

No jo @FilipProcházka spekuloval a vyspekuloval :). V podstate ale siel dobrou cestou kedze ked sa pozries ako je vizualizovany Repository pattern tak tam najdes aj metody ako insert, update, … akurat to nazval DAO.

Ovela dolezitejsie je ako pristupis k modelovaniu modelu to je to co riesi business logiku. Ludia stale dokola opakuju tu istu chybu a to ze prepokladaju ze k jednej tabulke musi byt jedna entita, jedna repository a v horsom pripade to nazvu model.

Takze ci uz budes pouzivat repository na citanie a entityManager na ukladanie je na tebe. V podstate si stale vystacis len s entityManagerom a nemusis pisat repositories.

PhelixMad
Člen | 36
+
0
-

Zdravím vás, ešte do toho trochu ripnem a spýtam sa:

  1. Na čo konkretne bola pôvodne určná DAO? Keď ju tak zle používali… :)
  2. Keď teda DAO nie je odporúčane používať, tak by som mohol poprosiť ukážku service vrstvy za pomoci persist a flush?

Ďakujem