Doctrine2或zend_db

ram*_*ere 10 zend-framework doctrine-orm

我使用过Zend_Db并且发现它非常好,但是为什么有些书和文档主张在Zend_Db上使用Doctrine 2?我不是ORM的专家,但是Zend_Db可以做的一些功能和Doctrine ORM不能吗?

哪个更安全?

使用两者的专家:你建议我使用哪一个?

是否有任何关于Doctrine 2的书?

Dav*_*aub 15

..但是他们的一些功能,Zend_Db可以做,ORM不能

本身没有真正的功能; 最后,您可以通过ZDB和ORM或任何其他方法处理持久性.但是使用ORM有时可以让你更多地关注你的模型而不是你的持久性.

还有任何关于Doctrine 2的书??? 不是文件!

实际上,我发现官方的Doctrine2文档非常好.

在Zend Framework应用程序中另一个有用的东西是Zend应用程序资源( Boris Guery这样),它允许您在引导程序中设置Doctrine,以便您可以轻松访问插件,控制器和其他中的实体管理器.服务.有关通过_initXXX()方法执行Doctrine2引导程序的示例,请参阅Eddie Jaoude驱动的此项目中代码.

最后我应该在学说2之前学习学说1.2吗?

不,Doctrine2与Doctrine1截然不同.

对于那些同时使用你建议我使用的专家?

好吧,我不是专家.但是我发现Doctrine2(这是一种基于映射器的持久性方法)比Doctrine1的ActiveRecord方法更自然,更容易让我的模型代表实际的域对象 - 用户,帖子等 - 而不是作为对象检索的网关和坚持.通过使用EntityManager作为持久性的主要途径,我发现构建其他需要持久性的服务更容易; 我只是将其EntityManager作为构造函数参数传递.Doctrine2的存储库提供了一个放置自定义查询的干净位置.

并不是说在ZDB或其他ORM下这一切都是不可能的; 只是我发现Doctrine2很简单.

简介:Doctrine2非常棒.;-)


Tom*_*itt 6

Zend_Db不是ORM.它只是一组实现数据库功能的类.

Zend_Db_Table实现了表数据网关设计模式.有了这个,您可以编写许多扩展类并构建自己的对象映射器,但不要认为Zend_Db是像Doctrine这样的"开箱即用"的ORM解决方案.

我发现Zend_Db不太适合编写复杂的对象映射器,但我更喜欢ORM,因为我觉得我可以更好地控制它的行为方式.