2010-12-09 6 views
2

Wir haben ein riesiges Projekt mit mehreren Datenbanken und Tabellen. Würden Sie eine Lehre oder ähnliches empfehlen? Was könnte Ihr Ansatz sein, um Modelle für einige Objekte zu erstellen? Zum Beispiel besteht unser Benutzerobjekt aus 3 Tabellen mit 1 bis N Beziehungen zwischen ihnen, z. Dba.userlogin Dbb.userprofile Dbb.lient.userid EtcWas ist die beste Möglichkeit, ein ORM für ein vorhandenes Projekt zu verwenden

vorschläge oder Spitze wird begrüßt.

Wir verwenden PHP. Danke

+1

Langsame und schmerzhafte Migration war meine Erfahrung ... Aktualisieren Sie einen Abschnitt nach dem anderen (z. B. migrieren * alles *, das Benutzerdaten ändert), um es so überschaubar wie möglich zu machen. Stellen Sie sicher, dass alles durch gute Tests abgedeckt ist, um sicherzustellen, dass das Verhalten vor == Verhalten nach. –

Antwort

1

Der Hauptgrund für die Verwendung eines ORM ist die Geschwindigkeit der Entwicklung und in geringerem Maße, um Sie in die beste OO-Praxis zu zwingen.

Sobald Sie tatsächlich ein System haben, spielt die Geschwindigkeit der Entwicklung keine Rolle mehr. Wenn Sie beim Schreiben des Systems ernsthaft von den Standard-OO-Mustern abgewichen sind, wird es sehr schmerzhaft sein, Ihr Design zu einem ORM zu zwingen, und wenn Sie Best Practice trotzdem folgen, wird es einfacher zu einem ORM zu konvertieren - aber Was gewinnst du wirklich?

Sie sollten den Aufwand und die Risiken eines solchen größeren Re-Factorings im Vergleich zu den erwarteten Vorteilen bewerten.

Sie könnten etwas wie iBatisy wie SQLMap betrachten, mit dem Sie den meisten vorhandenen Code unverändert lassen, aber einen ORM-Ansatz für neueren und neuen Code verwenden können.

0

Wenn Sie das Schema nicht ändern möchten, verwenden Sie die direkte Zuordnung einer Tabelle zu jedem Objekt. Es gibt Schema-zu-Modell-Übersetzer für Doctrine. Sie können die Beziehung zwischen Benutzern, Profilen und Benutzer-IDs im Modell markieren, und Doctrine stellt die entsprechenden Verknüpfungen zur Verfügung ($ user-> getProfile usw.).

Verwandte Themen