Newsgroup: it.comp.www.php
Titolo: Di Symfony2, ORM, prestazioni, paradossi e progetti che ne avranno bisogno

Rieccomi con una domanda delle mie ;)
 
Dunque, stiamo iniziando un nuovo progetto usando symfony2, e il mio dubbio ricade Model, che in tutti gli esempi che trovo in rete loro usano sempre un'ORM (Doctrine per lo più) come model.
 
 
Quello che mi spaventa del model sono due aspetti: performance e flessibilità.
 
Il primo aspetto, finchè l'applicazione non ha una certa dimensione e un certo numero di utenti attivi è secondario, e al momento che si raggiunge un numero di utenti 'serio' in teoria dovrebbero esserci le risorse per avere più potenza lato macchina... e comunque solitamente c'è il tempo di ottimizzare pian piano le prestazioni man mano che si presenta la necessità.
 
La flessibilità invece mi preoccupa già di più.
Se è vero che il 90% delle queyr sono 'standard', quel 10% è comunque importante (ok, Doctrine consente di usare raw sql, ma si perde un pò il senso di tutto).
Inoltre usare un'astrazione di questo tipo ti elimina le peculiarità del database scelto: postgresql o mysql hanno ciascuno i loro punti di forza, query scritte in un certo modo in uno sono lentissime nell'altro e viceversa (quando si raggiunge una certa complessità), usarli "senza sapere quale usi" ti costringe a usare solo i metodi in comune, perdendo tutti i vantaggi della scelta fatta (e in un certo senso è questo lo scopo di un orm, no?)
 
Ultima cosa, leggendo in giro molti dicono che un grosso problema degli ORM è la 'manutenzione', cioè tenere aggiornate le definizioni degli schemi con il database reale: da quel che ho letto quando un progetto raggiunge una certa dimensione questo aspetto diventa veramente problematico.
 
Ora, a me sembra una stupidata, nel senso che una volta che usi un orm devi, appunto, usarlo; se modifichi il db manualmente e poi aggiorni i file con le definizioni degli schemi ti tiri la zappa sui piedi, ma non avendo mai usato un orm devo findarmi di quel che leggo.
 
 
Qualcuno con più esperienza nell'uso di questi strumenti può darmi la sua opinione?

 Qualcuno con pi� esperienza nell'uso di questi strumenti pu� darmi la sua opinione?
 
La cosa che + di irrita di symfony (opinione personale) � che non esiste 
il modello "classico", ovvero se vuoi definire qualcosa
che lavori sul db e ti ritorni un'entit� non mappata sul db (magari un 
report), non ha una collocazione. Repository (quelli di base suoi e i 
custum che puoi farti tu), lavorano sempre e solo su entity (o custom 
entity), non su classi "generiche"; morale devi piazzare sta roba 
altrove (io le butto nei servizi).
 
-- 
Z.

 altrove (io le butto nei servizi).
 
 
Si, questa cosa è "voluta" dal team di symfony, ma anche io onestamente la capisco poco.
 
La mia idea era di crearmi il model classico come plugin (/vendor), poi ogni bundle implementa il suo; Per seguire il dependency injection (che come concetto mi piace) dovrò lavorare usu un wrapper a monte dell'autoload, ma non è un problema (colgo l'occasione per imparare i retroscena di symfony prima di partire col progetto).
 
Che poi mi è venuto in mente che, così facendo, alla fine della fiera mi ritrovo col mio model in perfetto mvc, e per ora il model può anche appoggiarsi su doctrine (non immaginavo avesse dei bug così grossi come dici) poi un domani se spuntano problemi dovrei solo riscrivere i vari model, senza toccare il resto del sistema (oibhò, è a questo che serve l'mvc, no?)