3
votes

I am in the early stages of rearchitecting my company's application. The app is currently running on symfony 1.2, and I used the default ORM at the time, Propel.

Symfony has since updated to 1.4 and switched default ORM to Doctrine.

From my understanding, each ORM excels at particular types of database structures. Is this true or is one far and away better than the other?

Are there any good methods to test which ORM would be best in my situation in a test environment using my schema (i.e.- set up dual, identical sites and run tests)?

2
I'm in a similar situation; my shop has made a number of symfony projects since 1.0, and we've been using Propel all along. What with the trend to Doctrine, I used it in starting our latest 1.4 project. I haven't done much work with the model yet; the one frustration I had was overloading what, in Propel, would have been existing methods like setFirstName() - in Doctrine, those are magic methods, and you can't call parent::setFirstName( 'Jimbob' ) in there, rather $this->_set( 'first_name', 'Jimbob' ) or some such. I found the Propel technique much more intuitive.yitznewton

2 Answers

1
votes

Here's a slightly newer comparison than the 2008 one: Doctrine vs Propel: 2009 update. There's also a (slightly Propel focussed) benchmarking exercise here.

In reality, the community around the frameworks is as important as the technical differences. I'm using Doctrine as I've been able to find much more relevant support information and examples. The traffic to the Symfony website suggests that that Doctrine is becoming the most popular choice, so I expect the Symfony/Doctrine community to continue to grow.

0
votes

Symfony 1.4 default ORM is currently Doctrine 1.2. I don't is there's any performance difference between Propel and Doctrine 1.2 but you can also use Doctrine 2.0 with this version of Symfony : done here

Doctrine 2 is a complete rewrite of Doctrine, seems to be faster and supports ODM like MongoDB.