2011-07-06 7 views
10

He usado Zend_Db y me pareció muy bueno, pero ¿por qué algunos libros y documentaciones recomiendan utilizar Doctrine 2 con Zend_Db? No soy un experto en ORM, pero ¿hay alguna funcionalidad que Zend_Db pueda hacer y Doctrine ORM no puede?Doctrine2 or zend_db

¿Cuál es más seguro?

Expertos que usan ambos: ¿cuál me recomiendan que use?

¿Hay algún libro para Doctrine 2?

Respuesta

15

..pero es su algunas funciones que el Zend_Db puede hacer y no puede ORM

Sin funcionalidad real per se; al final, puede manejar la persistencia a través de ZDB y ORM o cualquier otro método. Pero el uso de un ORM a veces le permite enfocar la atención un poco más en sus modelos y menos en su persistencia.

y hay algún libro para Doctrine 2 ??? ¡No la documentación!

En realidad, creo que el official Doctrine2 documentation es bastante bueno.

Otra cosa útil en una aplicación de Zend Framework es un recurso de aplicación Zend (like this one de Boris Guery) que le permite configurar Doctrine en el arranque para tener acceso fácil al administrador de entidades en sus complementos, controladores, y otros servicios. Para un ejemplo que realiza el arranque de Doctrine2 a través del método _initXXX(), consulte el code in this project dirigido por Eddie Jaoude.

finalmente, ¿debo aprender la doctrina 1.2 antes de Doctrine 2?

No, Doctrine2 es claramente diferente de Doctrine1.

y para expertos que usan tanto lo que me aconsejan usar?

Bueno, no soy un experto. Pero me parece que Doctrine2 (que es una aproximación a la persistencia basada en mapper) es más natural que el enfoque ActiveRecord de Doctrine1, permitiendo más fácilmente que mis modelos representen objetos de dominio reales (usuarios, publicaciones, etc.) en lugar de ser gateways para la recuperación de objetos y persistencia Al utilizar el EntityManager como la vía principal para la persistencia, me resulta más fácil estructurar otros servicios que necesitan persistencia; Simplemente paso el EntityManager como un argumento de constructor. Los repositorios de Doctrine2 proporcionan un lugar limpio para colocar consultas personalizadas.

No es que todo esto sea imposible en ZDB u otros ORM; es solo que lo encuentro sencillo con Doctrine2.

Resumen: Doctrine2 es increíble. ;-)

1

Recuerdo haber leído en algún lado que incluso los desarrolladores de Zend_Db no estaban contentos con el resultado final. En la práctica, me ha parecido poco claro, lento y no mejora mucho el uso de PDO directo para acceder a la base de datos.

Doctrine 2, aunque tengo muy poca experiencia con él, parece estar basado en conceptos mucho más sólidos y es menos probable que le cause problemas en el futuro.

Dicho esto, este es en gran medida un caso de lo que funcione para usted: si ya usa Zend_Db, quizás sea mejor que se quede con eso en lugar de aprender una nueva biblioteca.

+0

no Puedo aprender uno nuevo, en realidad quiero usar lo mejor de Zend Framework y todos sus complementos, pero el problema no se puede solucionar con un buen tutorial o libro de Doctrine ORM, ya que soy nuevo en ORM hace que sea difícil ,, gracias de todos modos –

6

Zend_Db no es un ORM. Es solo un conjunto de clases que implementa la funcionalidad de la base de datos.

Zend_Db_Table implementa el patrón de diseño Table Data Gateway. Con esto puedes escribir una cantidad de clases de extensión y crear tu propio mapeador de objetos, pero no asumas que Zend_Db es una solución ORM "lista para usar" como Doctrine.

He encontrado que Zend_Db es menos que ideal para escribir mapeadores de objetos complejos, pero lo prefiero a los ORM ya que siento que tengo más control sobre cómo se comporta.