doctrine:
- minimalizované verze
+ proč by nešla doctrine minifikovat? proč by se měla minifikovat?
+ když použiju na deployment git tak je mi jedno jestli má projekt bžilión souborů nebo 10
+ FTP? fuj fuj, málokterý server, který utáhne doctrine má povolené ftp...
- Část Doctrine závisí na části Symfony...
+ doctrine má vlastní loader, všechny potřebné třídy jsou prefixované Doctrine/ a při použití loaderu zvlášť pro doctrine a zvlášť pro symfony je to úplně irelevantní
- Při zadávání informací pomocí anotací je velmi snadné udělat překlep, o kterém se nijak nedozvíme.
+ cli orm:validate-schema
- Pokud chceme s vazbami mezi entitami pracovat obousměrně, tak je také musíme na obou stranách ručně definovat.
+ to je nevýhoda, jen pokud v ní někdo nevýhodu chce vidět
- Zcela zásadně mi vadí, že Doctrine 2 pokládá dotaz při každém průchodu cyklem, to je zabiják výkonnosti.
+ DQL
- Pokud chceme udělat něco jen maličko složitějšího, tak musíme použít jazyk DQL...
+ to je nevýhoda? je sice pravda, že by to mohli trochu více optimalizovat, ale DQL imho není těžké a stejně mám všechny definice v modelu a jenom volám funkce.
- Při spojení tabulek, které DQL elegantně podporuje, se stejná data přenáší opakovaně...
+ generuje to klasické SQL, do teď to nikomu nevadilo, dotazy jdou napsat i tak, aby byly více efektivní :)
- Z mého pohledu se ten úplně největší problém projeví v případě, kdy se rozhodneme do vazební tabulky přidat sloupec s nějakou informací...
+ nevidím problém, přidám sloupec do entity, zavolám v cli orm:schema-tool:update a přidám obsluhu do modelů
- generování schéma
+ proboha kdo by to dělal ručně? Myslím si, že Honza na to prostě zapoměl, nemyslím si, že by záměrně nutil čtenáře, aby si sami vytvářeli tabulky. To by byl sadismus :)
notorm:
- Kód je velmi snadno modifikovatelný – pokud chceme např. setřídit záznamy...
+ v doctrine je anotace na výchozí řazení entity, což pokryje velkou část výpisů
- Pokud z tabulky nepotřebujeme získat všechny sloupce, tak to v Doctrine 2 můžeme zajistit pomocí DQL...
+ v doctrine jsou na něco podobného proxy třídy, kterým se předá pouze ID a daty se naplní až při přístupu k jejich vlastnostem, proto taky doctrine doporučuje používat private a protected properties, aby mohla gettery a settery překrývat lazy loadingem
závěr:
Proč se srovnává not-orm (extrémně výkonná knihovnička, na čtení databáze) a pravé ORM (tlustá mrcha co mi dovolí nestarat se o databázi, ale jen o moje objekty)? Na malý webík, který potřebuju mít rychle použiju Nette a možná bych se o podíval na Nette\Database, ale ještě tak minimálně půl roku budu skeptik. Na velký projekt použiju Nette a Doctrine2, abych se nemusel starat o mapování a další otravné opakující se práce, ale napíšu entity, napíšu služby (a) model a mám vystaráno :)