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

Názory k článku
Doctrine 2: pokročilá definice entit

Tomáš Hofman aura:100
11. 8. 2010 8:47 Nový

Identifikátory

celé vlákno

Prosím opravte si větu „Doctrine 2 totiž data entit plnit a číst „zadem“…“ (2. věta v prvním odstavci části Gettery a settery).

Ale dost bylo hnidopišství: jaký je tedy vlastně rozdíl mezi SEQUENCE a IDENTITY, jestliže pro IDENTITY se v PostgreSQL použije datový typ SERIAL (který implicitně tvoří sekvenci)? Jediný důvod, který mě napadá je možnost parametrizace SEQUENCE (a nemožnost parametrizace IDENTITY :).

Složené identifikátory mi připadají jako velká slabina Doctrine 2, protože speciálně spojovací tabulky jsou na nich bezpodmínečně závislé (nebo existuje pro práci M:N vazbami nějaký jiný mechanismus?), a nejsou to jen spojovací tabulky, kde to může být problém. Budou tohle autoři Doctrine 2 někdy v budoucnu řešit (při běžném prohledávání webu Doctrine 2 jsem bohužel nenašel žádny roadmap)?

Omezení v serializaci a klonování se podle manuálu na první pohled nezdají být až tak drastická, uvidím jak se s tím poperu až na to opravdu narazím.

Díky za seriál,
jen tak dál! :)

Václav Novotný
11. 8. 2010 10:29 Nový

Re: Identifikátory

celé vlákno

jaký je tedy vlastně rozdíl mezi SEQUENCE a IDENTITY, jestliže pro IDENTITY se v PostgreSQL použije datový typ SERIAL (který implicitně tvoří sekvenci)? Jediný důvod, který mě napadá je možnost parametrizace SEQUENCE (a nemožnost parametrizace IDENTITY :).

Když použijeme strategii SEQUENCE, tak si entity manager zjišťuje jedním databázovým dotazem hodnotu identifikátoru během persistování entity.
Pokud použijeme IDENTITY, entity manager se o hodnotu identifikátoru nestará a nechává to na výchozí hodnotě sloupce, což u PostgreSQL při použití pseudotypu SERIAL znamená volání next_val(název_sek­vence). Navíc zde známe hodnotu identifikátoru až po flushnutí, což může ovlivnit naší práci s entitami v asociaci.

Osobně preferuji strategii SEQUENCE, protože mi zajistí, že znám hodnotu identifikátoru hned po persistování. Bohužel, autoři Doctrine2 stále nezměnili hodnotu AllocationSize z 10 na 1, takže si Doctrine alokuje hodnoty po 10, což ústí k tomu, že máme v hodnotách identifikátorů díry. Už dlouho slibují, že to změní na 1, ale ve zdrojovém kódu stále vidím 10. Stále si to tedy člověk musí u sebe přepsat. Je to v třídě ClassMetadata­Factory na řádku 396.

Jan Tichý aura:21
12. 8. 2010 7:10 Nový

Re: Identifikátory

celé vlákno

V průběžné vývojové vedrzi Doctrine 2 se dneska v noci výchozí AllocationSize konečně změnil z 10 na 1, změna je zařazena pro zveřejnění v rámci na září plánované Beta 4.

jos
jos (neregistrovaný) ---.tabor.telecom.cz
11. 8. 2010 12:36 Nový

Re: Identifikátory

celé vlákno


Než se tedy Doctrine 2 dostane do první stabilní verze, raději se prozatím složeným identifikátorům vyhněte

to bych asi upravil na:
Než se tedy Doctrine 2 dostane do první stabilní verze, raději se prozatím Doctrine 2 vyhněte

Jan Tichý aura:21
11. 8. 2010 20:17 Nový

Re: Identifikátory

celé vlákno

Široká podpora různých druhů kompozitních identifikátorů byla do noční verze Doctrine 2 přidána teprve před pár dny. A jak to bývá, tak už po odevzdání článku do redakce. Zatím to vypadá, že by to dokonce i mohlo fungovat ;). Zájemce odkazuji na podrobný článek Experimental Doctrine 2 Feature: Associated Entities as Id Fields.

Radek Tuc
Radek Tuc (neregistrovaný) ---.vodafone.cz
11. 8. 2010 8:59 Nový

identifikatory a podekovani

celé vlákno

Co se vicenasobnych identifikatoru tyce, predpokladam ze do finalni verze budou urcite doladeny. Jsou zaneseny i v XML schematu pro XML mapping, takze si myslim ze s nimi pocitaji (a jsou podporovany i v ORM Designer editoru).
Dal bych chtel podekovat za vynikajici serial. Kdyz jsem cetl prvni dil, bal jsem se onoho obvykleho uvodu, pak plytke shrnuti a hotovo. Zatim jsem mile prekvapen a jiz ted se tesim na dalsi dily.

M. Koubel aura:89
11. 8. 2010 12:27 Nový

překlep

celé vlákno

" .. důvodu některých budů v současné .. "

Jimilo
Jimilo (neregistrovaný) ---.rwe-services.cz
18. 8. 2010 14:33 Nový

Persistování entit

celé vlákno

Možná předbíhám, ale zajímalo by mě, zda se v Doctrine 2 ukládají vždy všechny vlastnosti entit (označené @column) najednou nebo se nějak řeší ukládání jen změněné podmnožiny?
Pokud totiž má daný uživatel např. možnost pracovat jen s omezenou množinou vlastností, tak by při uložení všech vlastností najednou mohl přepsat data se kterými paralelně pracoval jeho kolega, který má oprávnění např. na úplně jinou podmnožinu. (příklad: ekonom nastavuje částku, vedoucí termíny, řešitel řešení apod.)

Václav Novotný
18. 8. 2010 15:22 Nový

Re: Persistování entit

celé vlákno

Možná předbíhám, ale zajímalo by mě, zda se v Doctrine 2 ukládají vždy všechny vlastnosti entit (označené @column) najednou nebo se nějak řeší ukládání jen změněné podmnožiny?

Ukládají se pouze změněné hodnoty. Pro každou entitu se napřed spočítají tzv. change sety a ty se pak ukládají.

Pokud totiž má daný uživatel např. možnost pracovat jen s omezenou množinou vlastností, tak by při uložení všech vlastností najednou mohl přepsat data se kterými paralelně pracoval jeho kolega, který má oprávnění např. na úplně jinou podmnožinu. (příklad: ekonom nastavuje částku, vedoucí termíny, řešitel řešení apod.)

Tady už to zavání řešením atomicity ukládání a nějakým zamykáním entit. To Doctrine nijak neřeší. Jinak kontrolu, zda nějaký uživatel může upravit nějakou hodnotu, to si člověk musí napsat sám.

Matko
Matko (neregistrovaný) ---.kn.vutbr.cz
24. 8. 2010 16:44 Nový

pokracovani

celé vlákno

Kdy se dockame pokracovani serialu?

Martin Malý aura:93
24. 8. 2010 16:45 Nový

Re: pokracovani

celé vlákno

Podle autorových slov již pozítří…

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