Doctrine2 или zend_db - PullRequest
       17

Doctrine2 или zend_db

10 голосов
/ 06 июля 2011

Я использовал Zend_Db, и мне это показалось очень хорошим, но почему некоторые книги и документация рекомендуют использовать Doctrine 2 вместо Zend_Db? Я не эксперт в ORM, но есть ли какая-то функциональность, которую может сделать Zend_Db, а Doctrine ORM - нет?

Что безопаснее?

Эксперты, которые используют оба: какой из них вы мне посоветуете?

Есть ли книга для Доктрины 2?

Ответы [ 3 ]

15 голосов
/ 06 июля 2011

.. но есть ли у них некоторая функциональность, которую может сделать Zend_Db, а ORM не может

Нет реальной функциональности как таковой; в конце концов, вы можете обрабатывать постоянство с помощью ZDB и ORM или любым другим способом. Но использование ORM иногда позволяет вам немного больше сосредоточиться на своих моделях, а не на настойчивости.

а есть ли книга для Учения 2 ??? не документация!

На самом деле, я считаю официальную документацию Doctrine2 довольно хорошей.

Еще одна полезная вещь в приложении Zend Framework - это ресурс приложения Zend ( как этот * от Бориса Гери), который позволяет вам настроить Doctrine при начальной загрузке, чтобы у вас был легкий доступ к сущности менеджер в ваших плагинах, контроллерах и других сервисах. Для примера, который выполняет загрузку Doctrine2 с помощью метода _initXXX(), см. Код в этом проекте , управляемый Эдди Жауде.

наконец, должен ли я изучать учение 1.2 перед Доктриной 2?

Нет, Doctrine2 заметно отличается от Doctrine1.

и для эксперта, который использует оба, что вы советуете мне использовать ??

Ну, я не эксперт. Но я считаю, что Doctrine2 (который представляет собой основанный на отображении подход к сохранению) более естественен, чем подход Doctrine1 ActiveRecord, позволяющий моим моделям представлять реальные доменные объекты - пользователей, сообщения и т. Д., А не шлюзы для поиска объектов. и настойчивость. Используя EntityManager в качестве основного средства обеспечения устойчивости, я считаю, что проще структурировать другие службы, которым требуется постоянство; Я просто передаю EntityManager в качестве аргумента конструктора. Репозитории Doctrine2 обеспечивают чистое место для размещения пользовательских запросов.

Не то чтобы все это невозможно при ZDB или других ORM; просто я нахожу это простым с Doctrine2.

Резюме: Doctrine2 - это круто. ; -)

6 голосов
/ 06 июля 2011

Zend_Db не является ORM. Это просто набор классов, который реализует функциональность базы данных.

Zend_Db_Table реализует шаблон проектирования шлюза табличных данных. При этом вы можете написать несколько классов расширений и создать свой собственный объектный преобразователь, но не предполагайте, что Zend_Db - это готовое ORM-решение, подобное Doctrine.

Я обнаружил, что Zend_Db далеко не идеален для написания сложных объектов, но я предпочитаю его ORM, так как чувствую, что могу лучше контролировать его поведение.

1 голос
/ 06 июля 2011

Я помню, как читал где-то, что даже разработчики Zend_Db не были довольны конечным результатом. На практике я нашел это неуклюжим, медленным и не очень большим улучшением по сравнению с использованием прямого PDO для доступа к базе данных.

Доктрина 2, хотя у меня очень мало с этим опыта, похоже, построена вокруг более сильных концепций и с меньшей вероятностью вызовет у вас проблемы в будущем.

Тем не менее, это очень важно для вас - если вы уже используете Zend_Db, возможно, вам лучше придерживаться этого, чем изучать новую библиотеку.

...