Se publica la primera versión estable de Doctrine 2.0

Tres años después del comienzo de su desarrollo, ya está disponible la primera versión estable de Doctrine 2.0, el ORM oficial del futuro Symfony2. Esta nueva versión es diferente en todo a Doctrine 1, por lo que es totalmente incompatible y si quieres utilizarla tendrás que reescribir todo el código de tu aplicación.

Las principales novedades de Doctrine 2 son las siguientes:

  • Doctrine ahora se divide en dos componentes principales: DBAL, que se encarga de homogeneizar el acceso y uso de cualquier gestor de base de datos, y ORM, que te permite trabajar con bases de datos mediante objetos.
  • DQL ahora es un lenguaje de verdad (con su propia gramática EBNF), lo que permite generar mensaje de error comprensibles. Las consultas se podrán seguir haciendo mediante DQL o encadenando los métodos del objeto QueryBuilder.
  • Aunque sus creadores no han ofrecido datos concretos, aseguran que Doctrine 2 es "varios órdenes de magnitud" más rápido que Doctrine 1.
  • La información necesaria para mapear la información de la base de datos en objetos ahora se puede definir mediante YAML, XML, PHP y anotaciones en el propio código.

Doctrine 2 también elimina varias características de Doctrine 1:

  • Ya no se incluye ningún validador. Si utilizas Symfony2 esto no es mayor problema, ya que será el propio framework el que incluya todos los validadores necesarios.
  • Tampoco se incluyen behaviors (los famosos Timestampable, Sluggable, etc. de Doctrine 1). Este es el punto más polémico de Doctrine 2, ya que muchos programadores defienden que los behaviors son muy útiles. La razón por la que se han eliminado es que son demasiado mágicos y es difícil programarlos bien.

Si estás pensando en pasarte a Doctrine 2, recuerda que para actualizar de Doctrine 1 a Doctrine2 tienes que tirar a la basura todo el código de tu aplicación relacionado con el ORM. También tendrás que redefinir un nuevo mapeo de base de datos y repensar bien toda la parte del modelo antes de volver a escribir todo ese código.

Para que te resulte más fácil la transición, no olvides leer el tutorial Getting Started y después, la referencia completa de Doctrine 2.

Fuente: Doctrine 2 First Stable Release

Comentarios

  1. Tengo varias aplicaciones escritas mediante Propel y me había propuesto migrarlas a Doctrine...menos mal que me he esperado un poquito!!! Mi pregunta es: este ORM será compatible con symfony 1.x o será necesario migrar los proyectos a Symfony 2???

    Ignacio G. el 28 de diciembre de 2010, 19:14:35

  2. que lindo que lindo empezar el 2011 con todo nuevo

    symfony2 + Doctrine2

    ... y que poco tiempo tengo :(

    puentesdiaz el 29 de diciembre de 2010, 0:45:09

  3. que bien que ya este la version estable de Doctrine 2.0, pero lo que me parece malo esque para este fin de año no hayan sacado algun material la gente de Symfony, como lo hicieron en ediciones pasadas:

    Askeet, Jobeet

    pero bueno esperemos q Symfony 2 siga a paso firme

    saludos y feliz año

    paul el 31 de diciembre de 2010, 15:32:08

  4. Pues como Doctrine 2 requiere PHP 5.3 la unica version de Symfony que la soporte sera la 2.

    Symfony2 + Doctrine2 = WIN :D

    Saludos,

    yahuarkuntur el 4 de enero de 2011, 20:47:04

  5. Tambien se ha publicado (Fabien Potencier) que Symfony2 va a soportar Propel.

    Asi que seguiremos con Symfony2 y las discusiones de cual ORM es Mejor.....

    Yo me inclino por Propel.

    Saludos.

    Omar Yepez el 6 de enero de 2011, 18:38:31

  6. NECESITO ALGO MAS ESPECIFICO PERO SI HAY ALGO QUE ME AYUDA EN MI TAREA

    TAVERYL el 9 de junio de 2011, 2:33:43

Este artículo ya no permite añadir más comentarios.
¿Por qué? Los artículos cierran sus comentarios automáticamente unos meses después de su publicación para asegurar que estos sigan siendo relevantes.

Publicada el

28 de diciembre de 2010

Proyectos Symfony destacados

La plataforma de eCommerce 100% Symfony que rivaliza con Magento y PrestaShop. Ver más

Síguenos en @symfony_es para acceder a las últimas noticias.