Komentáře k článku

Doctrine 2: úvod do systému

Doctrine 2 je nový ORM framework pro jazyk PHP. V porovnání s již existujícími systémy pro mapování objektů na relační databázi přináší zajímavý posun a má velkou šanci stát se v budoucnu převládajícím ORM pro aplikace psané v jazyce PHP. V několika dílech tohoto seriálu si Doctrine 2 postupně představíme.

Zpět na článek

11 komentářů k článku Doctrine 2: úvod do systému:

  1. Robert1234

    Chybný odkaz

    Hned první odkaz v článku není zrovna ideální: file:///C:/DO­CUME%7E1/MARTIN%7E1­.MAL/LOCALS%7E1/Tem­p/_tc/doctrine-01-uvod.html

  2. Ludek Vodicka

    ORM Designer

    Vsem kdo pracuji s Doctrine2 nebo Doctrine bych doporucil nastroj ORM Designer.
    Namisto oddelenho vytvareni modelu a rucniho psani vsech definic umoznuje ORMD cely objektovy model navrhnout visualne a pote jednoduse vyexportovat. Narozdil od MySQL workbench nebo DBDesigneru ma ale podporu vsech vlastnosti (a v pripade Doctrine i vsech behaviours) pro dany ORM framework.

    1. andrej

      Re: ORM Designer

      Toto by malo vediet aj acceleo+emf, ale chcelo by to k tomu dobry tutorial. Nechce sa niekomu napisat?
      Dalsia vec – ako zlozite je integrovat nette s doctrine2?

      1. drevolution

        Re: ORM Designer

        Dalsia vec – ako zlozite je integrovat nette s doctrine2?
        Je to velice jednoduché. Vzhledem k tomu, že Doctrine2 nevyžaduje žádné dědění nějaké základní třídy, tak můžeme vzít naše stávající entity z modelu (poděděné od NetteObject), oanotovat je a máme hotovo. Od této chvíle s nimi můžeme pracovat přes EntityManager.

      2. Ondřej Mirtes

        Re: ORM Designer

        Nette není potřeba s Doctrine nijak integrovat, protože Nette nepředpisuje žádnou podobu modelů.
        Stačí si tedy dát do config.ini přihlašovací údaje k databázi, do bootstrapu nějaké to základní nastavení (předvedené v článku), založit si vlastní Entity (nejlépe asi poděděnou od NetteObject) a zvesela začít psát entitní třídy a libovolně je v presenterech používat.

      3. andrej

        Re: ORM Designer

        OK, pozrem to. Mam v plane prerobit nejake stare stranky a rozhodujem sa medzi yii a nette, pricom by som rad pouzil prave doctrine2.

  3. blizzy

    Proxy a metadata

    Škoda, že v článku není víc popsaná část toho posledního výstřižku kódu, konkrétně netuším, co si představit pod tou proxy a metadata driverem. Určitě to půjde dohledat v dokumentaci, ale v článku by to mělo být více vysvětleno.

    1. drevolution

      Re: Proxy a metadata

      Počkej na další díly, jistě to vysvětlí.
      Proxy se používají při práci s asociovanými entitami a naplno se využívají při jejich (lazy) načítání.
      Metadata driver poskytuje entity manageru informace o entitách. Základní metadata drivery jsou tři: pro práci s Docblock anotacemi, pro práci s XML a pro práci s YAML.

  4. drevolution

    Kešování metadat entit

    Jen doplním, že se zde nekonfiguruje EntityManager s aktivním kešováním metadat entit a DQL dotazů. V dokumentaci se silně doporučuje toto nějakým způsobem kešovat.

    Do not use Doctrine without a metadata and query cache! Doctrine is highly optimized for working with caches. The main parts in Doctrine that are optimized for caching are the metadata mapping information with the metadata cache and the DQL to SQL conversions with the query cache. These 2 caches require only an absolute minimum of memory yet they heavily improve the runtime performance of Doctrine. The recommended cache driver to use with Doctrine is APC. APC provides you with an opcode-cache (which is highly recommended anyway) and a very fast in-memory cache storage that you can use for the metadata and query caches as seen in the previous code snippet.

    http://www.doctrine-project.org/projects/orm/2.0/docs/reference/configuration/en#bootstrapping:obtaining-an-entitymanager

    Nejjednodušší na použití je DoctrineCom­monCacheArra­yCache, která se aktivuje takto:

    $cache = new DoctrineCommonCacheArrayCache();
    $config->setMetadataCacheImpl($cache);
    $config->setQueryCacheImpl($cache);

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://zdrojak.cz/?p=3279