Doctrine 2, prima release stabile

di Gianni Tomasicchio - 22 dicembre 2010

Dopo due anni e mezzo di incubazione, il team di sviluppo di Doctrine ha annuncio la disponibilità della prima release stabile di Doctrine 2.

Il lungo periodo di sviluppo lascia intuire le radicali trasformazioni avvenute dalla prima versione del famoso ORM. Il codice infatti è stato profondamente rivisto per sfruttare appieno le caratteristiche di PHP 5.3, per risolvere diverse limitazioni architetturali ma soprattutto per passare da un approccio di tipo ActiveRecord ad uno definito DataMapper.

Gli sviluppatori hanno investito molte energia anche sul fronte della qualità, realizzando oltre mille test per il solo motore ORM e più di 400 per il layer di accesso ai dati. Anche la documentazione è di tutto rispetto, costituita da una dettagliata guida di riferimento, un piccolo tutorial per iniziare ed un ricettario di suggerimenti da impiegare nei propri progetti.

Ecco quindi le principali novità di Doctrine 2:

  • Il Doctrine Query Language (DQL) è diventato a tutti gli effetti un linguaggio vero e proprio, col quale scrivere query utilizzando le Entity ed i relativi attributi. Grazie alla realizzazione di un vero e proprio parser per il DQL, Doctrine 2 trasforma gli statement DQL in un Abstract Syntax Tree da cui genera l'SQL. Lo sviluppatore può interagire con tale processo per modificare ed estendere lo stesso DQL e l'SQL derivato.
  • Gli oggetti persistenti (le entity)  non devono più estendere una classe astratta di base.
  • Il concetto di UnitOfWork è stato profondamente rivisto. Un EntityManager tiene traccia di tutte le modifiche subite dagli oggetti persistenti che gli vengono passati fino a quando non viene richiesta una esplicita sincronizzazione con il database.
  • Le impostazioni definite attraverso il linguaggio YAML non devono essere più convertite in PHP. Doctrine 2 supporta nativamente le specifiche definite attraverso YAML, XML, PHP e le annotazioni Doc-Bloc.
  • Doctrine 2 introduce una API in grado di trasformare un generico statement SQL in una struttura ad oggetti. Questa funzionalità, utilizzata dallo stesso DQL, permette di utilizzare statement complessi all'interno dell'ORM.

E' chiaro quindi che Doctrine 2 non conserva la compatibilità con la precedente versione, anzi, come gli stessi autori affermano, tra le due versioni in comune è rimasto solo il nome del progetto.

Effettua l'accesso o registrati per inserire un commento