Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Videotutoriál Doctrine 2 a NotORM: ukládání dat

V druhé části subjektivního srovnávání Doctrine 2 a NotORM se autor Jakub Vrána zaměří na ukládání dat do databáze v obou těchto systémech.

Seriál Videotutoriál Doctrine 2 a NotORM

Všechny díly seriálu
Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

První část videotutoriálu se zabývala získáváním dat. Silnou stránkou Doctrine 2 je ale podle některých názorů hlavně ukládání dat. Podle mě je sice ukládání dat ta jednodušší část, na které se toho nedá moc pokazit ani získat, ale podívejme se, jak se s touto částí aplikace Doctrine 2 vypořádá.

Doctrine 2 – ukládání dat

Screencast

Zdrojové kódy

Co se mi na řešení v Doctrine nelíbí?

  1. Pro získání referencí na entity se pokládají zbytečné dotazy.
  2. Pokus o přiřazení neplatné entity nezpůsobí žádnou chybu. Místo toho se prostě přiřadí hodnota NULL.
  3. Ani přiřazení hodnoty do neexistujícího sloupce nezpůsobí žádnou chybu. To si musíme ošetřit sami pomocí setterů, Doctrine nám s tím nijak nepomůže.
  4. Doctrine sice má informace o omezení jednotlivých sloupců (např. maximální délka řetězce), ale při nastavování hodnot je nijak nevyužívá. O kontrolu se opět musíme postarat sami.
  5. Pro zvýšení počtu návštěv se položí dva dotazy. Ty se navíc neprovedou atomicky, takže při konkurenčním přístupu se některé návštěvy nezapočtou. Řešením je ruční obsluha transakce, což se mi zdá poněkud nízkoúrovňové.
  6. Vynulování počtu návštěv u všech článků si vyžádá tolik dotazů, kolik je článků.
  7. Doctrine automaticky vytváří jakési proxy soubory, které bychom neměli ručně měnit.

Některé připomínky lze naštěstí poměrně snadno vyřešit. Body 1 a 2 zmizí v případě, že místo metody find použijeme metodu getReference. U nich jde tedy spíše o kritiku seriálu na Zdrojáku, který sice ukládání dat věnuje jeden díl, ale o této důležité metodě se nezmiňuje.

Bod 4 přímo řeší některé databázové systémy. Např. v MySQL lze zapnout striktní režim, který při pokusu o vložení neplatných dat způsobí chybu, ale třeba v SQLite nic takového neexistuje. Doctrine obsahuje vrstvu pro abstrakci databázových systémů, která by chování měla sjednocovat.

Body 5 a 6 lze vyřešit použitím DQL. To už jsme rozebírali v prvním díle – jednak bych se u tak vysoké vrstvy, jakou Doctrine je, chtěl použití DQL pokud možno úplně vyhnout. A za druhé mi stejně jako v prvním díle vadí, že se dvě podobné věci dělají zcela odlišným způsobem – když chci vynulovat počet návštěv u jednoho článku, tak k tomu můžu použít práci s entitami, když u více článků, tak je vhodné použít DQL (obdobně zvyšování počtu návštěv oproti nastavování pevného počtu).

NotORM – ukládání dat

Screencast

Zdrojové kódy

Ve srovnání s Doctrine vidím tyto rozdíly:

  • NotORM se nepokouší o abstrakci databázových systémů, takže i datum je nutné zformátovat pro tu kterou databázi.
  • Pokus o přiřazení do neplatného sloupce nebo neplatné reference způsobí podle očekávání chybu. Chování při přiřazení neplatné hodnoty je závislé na databázovém systému.
  • Zvýšení počtu návštěv se dělá stejně jednoduše jako přiřazení pevné hodnoty. Není zapotřebí vlastní zahajování transakce ani ruční psaní dotazu.
  • Aktualizace všech záznamů se zvládne jediným dotazem.

Závěr

Ani při ukládání dat mi knihovna Doctrine 2 příliš nevyhovovala. Ve třetí části se podíváme na definici modelu.

Odpovědi autora Doctrine jsou opět na autorově blogu.

Disclaimer: Autor textu je zároveň autorem popisované knihovny NotORM.

Jakub Vrána

Autor se živí programováním v PHP, podílí se na oficiální dokumentaci, vyučuje na MFF UK a vede odborná školení. Poznámky si zapisuje na weblog PHP triky.

Školení SEO (optimalizace pro vyhledávače)

DW - Školení SEO
  • Jak fungují vyhledávače a co od nich můžete očekávat.
  • Analýza klíčových slov - kde hledat, jak slova vybrat, jak optimalizovat.
  • Metody linkbuildingu - jak získat zpětné odkazy aniž byste za ně museli platit.
  • Vyhodnocování SEO - nesledujte jen pozice.

Další informace o školení SEO »

Seriál Videotutoriál Doctrine 2 a NotORM

Všechny díly seriálu

Přehled názorů

Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Honza Marek 17. 1. 2011 07:27
Nový
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 18. 1. 2011 10:12
Nový
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Josef Čech 18. 1. 2011 12:18
Nový
 
 
├ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 18. 1. 2011 12:30
Nový
 
 
│
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Vlasta Neubauer 19. 1. 2011 17:39
Nový
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Oldis 18. 1. 2011 21:17
Nový
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
jos 19. 1. 2011 15:55
Nový
 
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Oldis 22. 1. 2011 11:23
Nový
 
 
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
jos 24. 1. 2011 11:25
Nový
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
jos 17. 1. 2011 09:22
Nový
├ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Filip Procházka 17. 1. 2011 12:06
Nový
│
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
jos 17. 1. 2011 12:52
Nový
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 17. 1. 2011 14:44
Nový
 
├ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
jos 17. 1. 2011 17:37
Nový
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
jos 26. 1. 2011 19:24
Nový
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 27. 1. 2011 13:30
Nový
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
jos 27. 1. 2011 17:58
Nový
 
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 28. 1. 2011 00:54
Nový
 
 
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
jos 28. 1. 2011 11:59
Nový
 
 
 
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 29. 1. 2011 02:27
Nový
Unit of Work
Honza Marek 17. 1. 2011 09:57
Nový
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jiří Petruželka (Nox) 17. 1. 2011 10:16
Nový
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Palo 17. 1. 2011 11:32
Nový
├ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Vít Šesták (v6ak) 18. 1. 2011 09:15
Nový
│
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 18. 1. 2011 10:39
Nový
│
 
├ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Vít Šesták (v6ak) 18. 1. 2011 10:55
Nový
│
 
│
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 21. 1. 2011 15:41
Nový
│
 
│
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
notnotorm 21. 1. 2011 17:57
Nový
│
 
├ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Franta Kučera 18. 1. 2011 18:23
Nový
│
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
notnotorm 21. 1. 2011 17:49
Nový
│
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 24. 1. 2011 13:01
Nový
│
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
notnotorm 24. 1. 2011 15:25
Nový
│
 
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 24. 1. 2011 15:33
Nový
│
 
 
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
notnotorm 24. 1. 2011 16:13
Nový
│
 
 
 
 
 
 
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Jakub Vrána 24. 1. 2011 16:28
Nový
└ 
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Franta Kučera 18. 1. 2011 18:19
Nový
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
Franta Kučera 17. 1. 2011 12:19
Nový
Re: Videotutoriál Doctrine 2 a NotORM: ukládání dat
designerrr 20. 1. 2011 00:02
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem