2010-12-09 28 views
2

Nous avons un énorme projet avec plusieurs bases de données et tables. Recommanderiez-vous la doctrine ou similaire? Chapeau serait votre approche dans la création de modèles pour certains objets? Par exemple notre objet utilisateurs est composé de 3 tables avec 1 à N relations entre eux tels. Dba.userlogin Dbb.userprofile Dbb.lient.userid EtcQuelle est la meilleure façon d'utiliser un ORM sur un projet existant

Toute suggestion ou un conseil est la bienvenue.

Nous utilisons php. Merci

+1

Migration lente et douloureuse était mon expérience ... Mise à niveau d'une section à la fois (par exemple migrer * tout * qui modifie les données utilisateur) pour le rendre aussi gérable que possible. Assurez-vous que tout est couvert par de bons tests pour s'assurer que ce comportement avant == comportement après. –

Répondre

1

La raison principale de l'utilisation d'un ORM est la vitesse de développement, et, dans une moindre mesure, de vous forcer dans la meilleure pratique OO.

Une fois que vous avez réellement un système, la vitesse de développement n'a plus vraiment d'importance. Si vous avez sérieusement dévié des modèles OO standard lors de l'écriture du système, il sera très pénible de forcer votre conception à utiliser un ORM, et, si vous avez suivi les meilleures pratiques de toute façon, il sera plus facile de convertir en ORM - mais qu'est-ce que vous gagnez réellement?

Vous devriez évaluer les efforts et les risques impliqués dans un tel ré-affacturage majeur par rapport aux avantages attendus.

Vous pouvez regarder quelque chose comme iBatisy SQLMap qui vous permettrait de laisser la plupart de votre code existant tel quel mais vous permettre de prendre une approche ORM pour le nouveau code et factorisé.

0

Si vous ne souhaitez pas modifier le schéma, utilisez le mappage direct d'une table à chaque objet. Il existe des traducteurs de schéma à modèle pour Doctrine. Vous pouvez marquer la relation entre les utilisateurs, les profils et les ID utilisateur dans le modèle et Doctrine fournira les liens appropriés ($ user-> getProfile, etc.).