Frage

Ich habe mehrere Objekte wie Produkte, Bestellung usw. Wenn ich Informationen aus meiner Datenbank erhalte, nehme ich eine Zeile und erstelle eine der Objekttypen. Ich arbeite dann mit diesem erstellten Objekt. Ich habe gelesen, dass dies eine Fabrik genannt wird.

Gibt es einen Vorteil dafür? Besonders in einer locker getippten Sprache wie PHP?

Vielen Dank

Bearbeiten: Ist hier eine Datenbank -Agnostizität? Ist es das, was ein Orm im Wesentlichen tut?

War es hilfreich?

Lösung

Durch das Erstellen Ihrer Objekte aus den Datenbankabfragen definieren Sie die Zuordnung zwischen Ihren Objekten und der relationalen Datenbank. Genau das macht die ORM -Software.

Auf diese Weise schützen Sie Ihren Code vor Änderungen auf zwei Arten:

  • Änderungen an Ihrem Datenbankschema werden Ihren Code nicht durchlaufen. Stattdessen befinden sich die Codeänderungen nur in Ihren Datenbankzugriffsobjekten.

  • Sie können zu einem anderen DBMS wechseln, indem Sie eine neue Datenbankschicht implementieren, die dieselbe Schnittstelle wie das Original befolgt. Ihre anderen Objekte erfordern keine Änderungen.

Ich denke, in diesem Sinne erhalten Sie eine Datenbank-Agnostizität, aber Sie werden wahrscheinlich besser mit einer Datenbankbibliothek dran sind, die diese Agnostizität außerhalb des Box bietet.

Meiner Meinung nach ist der Vorteil, dass Sie mit Objekten arbeiten und alle Vorteile erhalten, die eine objektorientierte Sprache bietet. Sie können dann die Domänenlogik auf einer höheren Ebene (in Bezug auf die Objekte, die Sie definiert haben), ohne Datenbankabfragen lesen. Das Schreiben des Orm selbst kann schwierig sein, aber es gibt Tools, die dabei helfen.

Dies ist die Route, die ich normalerweise nehme, aber ich mache keine PHP -Entwicklung, daher kann ich nicht sagen, wie gut sie für diese Sprache gilt.

Andere Tipps

Was Sie beschreiben, ist eine Implementierung einer Datenzugriffsschicht - sie klingt nicht nach einem Beispiel für das Fabrikmethodenmuster, Noch die Abstraktes Fabrikmuster.

Ja, Orms überbrücken die Lücke von Objekten zu relationalen Datenbanken und können als Datenzugriffsschicht dienen. Beachten Sie, dass eine von Ihnen verwendete ORM bestimmte Profis/Nachteile/Einschränkungen hat. Abhängig von Ihren Erfahrungen und Anforderungen ist das Schreiben Ihrer eigenen Datenzugriffsschicht manchmal eine gute Idee. Ich habe nicht das Gefühl, ein Drittanbieter-Orm zu verwenden.

Ja, eine gute Datenzugriffsebene erleichtert es einfach, Ihren Speichermechanismus (verschiedene Datenbank, XML, flache Dateien, was auch immer) auszutauschen, ohne Ihre Geschäftslogik, Benutzeroberfläche oder einen anderen Code zu ändern.

Unabhängig von Sprachen mit losen oder starken Typen ist es, wenn Sie in einer OO-Sprache arbeiten, viel einfacher, Code mit Datenobjekten zu schreiben (bereitgestellt durch eine ORM- oder Homegrown-Datenzugriffsschicht). Ich bin mir sicher, dass es möglich ist, ein System ohne Datenzugriffsschicht zu schreiben, in dem Ihre Geschäftsschicht direkt mit der Datenbank arbeitet. Es wird jedoch wahrscheinlich schwieriger sein, umzusetzen und aufrechtzuerhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top