Usare database Propel con PHP5 (Parte VII)

Pagina 7 di 8

Ulteriori strumenti

Per quanto scrivere un'applicazione per l'utilizzo diPropel possa essere molto più veloce rispetto al modotradizionale, la configurazione del suo ambiente diprogrammazione e di attivazione richiede un po' di tempo.Una delle attività che richiede più tempoè la preparazione del file XML di descrizione delloschema del DB. Fortunatamente Propel rende possibile generarequesto file sull'esempio del database esistente. Questoè particolarmente comodo se inseriamo Propel in unprogetto in cui il database sia stato giàprecedentemente progettato.

La generazione del file XML è effettuata in modosimile alla generazione dei file classe, utilizziamo perquesto compito(ingl. target) Phing di nomecreole (maggiori informazioni nella CorniceInstallazione). Un esempio di richiamo puòessere: phing -Dproject=bookstore creole. Anche se, nel fileottenuto schema.xml dovremo sicuramente eseguire dellemodifiche a mano, questo è più comodo cheiniziare tutto il lavoro da zero.

Vale la pena di dedicare un po' di tempo ad approfondirela conoscenza delle altre direttive preparate dagli autori diPropel (l'elenco, insieme alle descrizioni, lo otteniamodopo il richiamo di Phing con l'opzione -list). Traqueste troviamo ad esempio la possibilità di esportarei dati in formato (datadump), e in seguito di importarli nelDB prescelto (datasql). È questo un eccellente modoper migrare da una piattaforma di database, ad un'altra.

 

ORM – ne vale la pena

Osservare alcuni degli esempi di applicazione di Propel, cida un'idea della quantità di tempo che grazie adesso possiamo risparmiare in fase di scrittura diun'applicazione web che utilizzi un database. Inoltre,l'indipendenza dell'applicazione da un sistemaspecifico di database ci dà non solo lapossibilità di far girare l'applicazione ad es. suMySQL, PostgreSQL e Oracle, ma anche ci mette al riparo, adun certo livello, dagli spiacevoli effetti della modifica delnome della tabella e di quelli dei suoi campi. Purtroppo cipriveremo di queste possibilità se, nei nostri script,inseriremo istruzioni SQL caratteristiche del dialetto di unospecifico database.

Nonostante gli indiscutibili pregi che comportal'utilizzo di una soluzione di tipo ORM, convieneriflettere sulle sue potenziali trappole. Prima di tuttodobbiamo ricordare, che l'utilizzo di strumenti dimapping si collega alla scrittura ed all'assistenza dellemeta-informazioni. Nel caso di Propel queste assumono laforma di XML. D'altra parte, nell'accesso standard,tutte le meta-informazioni vengono distribuitedall'intera applicazione in istruzioni SQL. Esiste lapossibilità che nonostante l'impegno di lavoroiniziale, l'utilizzo del supporto ORM risulti esserepiù facile nella manutenzione e nello sviluppo. Datutto ciò discende una semplice conclusione, chePropel e le librerie simili, si confanno a progetti grandi,invece nel caso di quelli piccoli e di vita corta, possonocostituire un'inutile complicazione.

Un altro argomento, spesso riportato contro le soluzioni ditipo ORM è il problema dell'efficienza. Nel casodi parti di query specifiche SQL, può accadere che, ilcodice generato automaticamente attraverso la mediazionedell'Abstraction Layer, sia meno efficace di quelloscritto a mano dal programmatore. Risulta difficile fornireuna ricetta univoca, perché l'efficenza di unprogramma dipende in larga misura dal modello fisico deidati. Si può assumere, come regola generale, che glistrumenti ORM, si verificano meglio nel caso di pagine nellequali compaiono molte query su un unico oggetto con diversetabelle. Un buon esempio può essere il negozioon-line, dove, a parte le schede dei prodotti, vediamo i loroprezzi e recensioni, il nome dell'utente loggiato ed ilcontenuto del cestino, i santi del giorno, le categorie deiprodotti e le diverse novità. Occorre usare estremaprudenza nell'applicare ORM in applicazioni in cuimanipoliamo oggettie dati tabellari come ad es. rapporti,assortimenti ecc. In questi casi un approccio standardè più naturale ed effettivo.

Indipendentemente dal tipo di applicazione, informazioniconcrete sulla sua efficienza si possono ottenere soltantodopo la sessione di profilo. La nostra intuizione spesso ciinganna e le strettoie si trovano in posti completamentediversi da quelli in cui ce le aspettavamo. Anche se nelprogramma alcune operazioni vanno eseguite velocemente,è meglio codificare in SQL solo questi casi specifici,scrivendo ad es. il settore del codice generato in modostandard invece di servirci di ORM.

<<< Precedente -  Continua >>>