哪个ORM与Symfony2一起使用?

时间:2011-11-02 11:34:48

标签: orm symfony doctrine-orm propel

我正在使用Symfony2开始一个新项目,我不确定选择哪个ORM。我听说过关于Doctrine2的一些不好的事情,特别是在继承和DQL方面。似乎Propel已经从死里复活了,但另一方面,它并不能保证会永远存在。

你有什么建议吗?

3 个答案:

答案 0 :(得分:11)

我可以告诉你Propel是最适合与Symfony2一起使用的ORM。它工作正常,没有计划停止活动。 Propel2项目正在向Propel 1.6.x(它真的很棒)的方向发展。

不要犹豫使用Propel,包括Sensio Labs在内的许多用户都在使用它!

以下是Symfony2的Propel文档:http://www.propelorm.org/documentation/#working_with_symfony2

注意:Stack Exchange上有一个相关主题:https://softwareengineering.stackexchange.com/questions/48760/should-i-choose-doctrine-2-or-propel-1-5-1-6-and-why/117078#117078

我忘记了一些观点:

  • 行为是Propel的一部分,Doctrine2中没有提供。这意味着Propel正式支持他们并提供支持/改进。不确定Doctrine的。
  • Propel非常快。我同意Doctrine2比Propel更适合大规模插入。
  • Propel是10岁,稳定并且被很多人使用。
  • 没有其他语言可以学习Propel。
  • 由于流畅的API,Propel2确实是面向对象的。
  • Doctrine2 ORM与ODM不共享相同的API,所以你可以使用D2 ODM和D2 ODM之类的Propel,这里没有专业人士。
  • Propel使用特定平台的代码生成,因此它针对您的需求进行了优化,并且快速归功于运行时和运行时间。发电机零件。

我在Doctrine2中喜欢的一些观点:

  • 注解
  • 整个代码,因为它是最近的。

问题不在于Doctrine DBAL,而在于Doctrine ORM。 Propel2正在改进整个Propel 1.6.x代码。

哦,我长期使用Doctrine2了;)

答案 1 :(得分:4)

我个人的选择是Doctrine 2,原因如下:

  • 从概念上讲,它很容易理解。与实体和实体经理合作很简单。我喜欢实体不需要扩展任何基础模型类(如在Doctrine 1中)。

  • 现在它是 Symfony2的标准ORM。虽然可能没有被Symfony2正式“认可”,但大多数人都在使用它,因此网上有大量的信息。这个价值非常大。

你提到你听说过“关于Doctrine2的坏事” - 重要的是你要意识到ORM不会是完美的。我遇到了一些问题,但只要你有创造性思考,你就可以找到解决方案。有时,该解决方案意味着编写原始SQL,无论ORM纯粹主义者可能会说什么。我没有遇到任何我后悔使用Doctrine 2的情况。

我花了很多时间看Propel,但我只是不喜欢它是如何工作的。这并不是说它是一个编程不好的库,但对我个人来说这不太合适。但由于每个开发人员都不同,我可以提供的最佳建议是查看两个库的文档和用法示例。既然你将成为使用它的人,而不是我们,你需要选择你认为最有益的库。

答案 2 :(得分:1)

  

我可以告诉你Propel是最适合与Symfony2一起使用的ORM   我不同意。 Doctrine2是Symfony的 native ORM。它包含在标准的Symfony发行版中:http://symfony.com/download

Symfony文档描述了主要使用Doctrine而不是Propel。所以,我认为Propel的选择不太明显。我认为你应该真正减轻后果。我更喜欢Doctrine。

以下是Propel捆绑包支持的选项列表:http://www.propelorm.org/cookbook/symfony2/working-with-symfony2.html