Symfony propose actuellement deux ORM pour vos projets web: Propel et Doctrine. Suite à une conférence Live tenue par Fabien Potencier (Fondateur et lead développeur de Symfony), voici quelques éléments de réponse pour choisir le bon ORM.

Pour commencer, petit éclaircissement pour ceux qui ne connaissent pas:
Symfony est un Framework PHP5. A ne pas confondre avec un CMS !
Symfony permet d'avoir une base solide et performante pour concevoir rapidement des sites web avancés.
Voici quelques fonctionnalités clés par défaut dans le framework:
Ce n'est qu'un résumé brief, je pense que je ferais un billet complet sur le Framework.
Un ORM (Object-Relational Mapping) est une technique permettant de lier un objet à une base de données relationnelle.
A titre d'exemple, en PHP 5 (Orienté Objet), nous aurons un Objet Membre qui sera directement lié à une table Membre.
Ainsi l'objet est directement lié et permet de mettre en place des méthodes qui vous simplifieront la vie pour créer, modifier, récupérer et supprimer des informations...
Ce concept existe dans beaucoup de langages, et en PHP5, il existe notamment 2 frameworks d'ORM qui sont:
et 
Ce sont ces deux Frameworks qui sont proposés dans Symfony.
On ne peut en utiliser qu'un seul par projet web, il faut donc choisir l'un des deux ... d'où l'objectif de ce billet, vous aider à choisir celui qui vous conviendra le mieux !
Propel: Il va générer du code pour les méthodes et requêtes
Doctrine: "Introspection" du code
Avantage: Propel, car on a une trace du code généré, pratique pour le debug.
Propel: Récupère plus facilement l'objet complet qu'une seule partie des informations
Doctrine: Facilité d'optimisation des données à récupérer etc. Plus rapide au développement.
Avantage: Doctrine
Avantage: Propel, il est plus rapide que Doctrine sur une même requête mais pas lorsqu'il y'a gestion de cache.
Propel: Depuis la première version, Symfony utilise Propel comme ORM (Ancré dans la version 1.0 puis sorti du core à partir de la version 1.1)
Doctrine: Plus récemment proposé dans Symfony (Version 1.1)
Avantage: Doctrine, c'est l'avenir dans Symfony, dès la version 2.0, seul doctrine sera utilisé. Sensio a embauché le lead développeur de Doctrine récemment, cela va de soi qu'il sera bien plus optimisé avec Doctrine dans les prochaines versions à venir.
Propel: Très bien pour les requêtes basiques, comme récupérer des objets avec des clause where et join. Mais beaucoup moins lorsque les requêtes sont avancées avec des Count, Group by etc...
La syntaxe de Propel est assez lourde je trouve à comparer avec Doctrine.
Doctrine: Je l'utilise que depuis peu, mais j'en suis plutôt content. La syntaxe est très simple. On a plus de liberté sur les requêtes qu'avec propel.
Avantage: Doctrine. Comme le grand chef de Symfony, je privilégierai plus Doctrine pour mes prochains projets web.
Propel fonctionne très bien et un site qui tourne sous propel n'a pas besoin d'être migré sous Doctrine.
Mais si vous démarrez un nouveau projet Symfony, optez plutôt pour Doctrine qui sera bientôt le seul ORM géré par Symfony (Dès la version 2.0 en fin d'année 2009).
Un conseil, mettez vous à Symfoniser si ce n'est pas encore fait, vous ne le regretterez pas !
A voir aussi sur le même sujet:
Pour poster un commentaire, vous devez être identifié. Vous pouvez choisir parmi ces trois méthodes d'identification:
Compte la Ferme du WebIdentifiez-vousInscrivez-vous |
Compte Facebook |
Compte Twitter
|