Hoy he decidido mezclar distintos temas de los que he escrito anteriormente: los Mapeos Objeto Relacionales y las Bases de Datos orientadas a Documentos. Si en otros artículos he hablado de Hibernate para Java. Hoy quiero hablar de Doctrine2 para PHP, ya que he comenzado a trabajar en esta tecnología y este framework de persistencia nos aporta la misma filosofía que aportaba Hibernate. El patrón de mapeo de datos de la base de datos es un mecanismo de persistencia, donde el modelo de la aplicación y la fuente de datos no tienen dependencias entre ellos. Por tanto, nos aporta grandes ventajas integrar un ORM. Pero ahora que los sistemas de bases de datos están cambiando y están implantándose en proyectos web bases de datos no relacionales nos preguntamos: ¿tiraremos por la borda las características de los ORM? La solución es lo que conocemos como ODM.
Doctrine2 tiene una solución para bases de datos relacionales, pero además ahora nos aporta soluciones para bases de datos orientadas a documentos trayéndonos el concepto de ODM (Object Document Mapping)
Un ODM nos aporta las ventajas de un ORM pudiendo almacenar los objetos de nuestro modelo de la aplicación en almacenamiento NoSQL (Documentos) con la misma facilidad que existía para persistir el modelo relacional. Doctrine se ha expandido con el objetivo de dar soporte a bases de datos como MongoDB y CouchDB. La unidad básica de persistencia en estos sistemas es el Documento y será fácil transformarlo en objetos de programación.
¿Qué características nos aporta Doctrine2 como ODM?
Ciertas características que nos aporta este framework y que deberíamos conocer son:
- Almacenamiento de nuevos documentos, actualización y eliminación
- Capacidad seguimiento de las acciones en las entidades para posteriormente persistirlos con el método flush() transparentemente.
- Soporte para Colecciones y asociaciones del tipo OneToMany y ManyToOne
- Soporte para documentos embebidos; tanto para uno como varios campos de documentos. Esto es una diferencia respecto a los ORM ya que no permiten soporte para mapear
- Operaciones de cascada de la persistencia y la eliminación de los objetos
- Especificación de metadatos de mapeo en distintos formatos (XML,YAML,PHP,Annotations)
La documentación no es demasiado extensa y completa pero ayuda a entender los conceptos e implementación básicos de Colecciones y Documentos.
Conclusiones
El mapeo objeto-documento es una alternativa a explorar. Los ODM están poniéndose de moda en tecnologías como Java (Morphia) y PHP (Doctrine2). Nos facilitan la implementación de bases de datos NoSQL con mapeo de datos, aportándonos características y soluciones que no siempre alcanzan los sistemas relacionales