Ist ORM alles oder nichts?

8

Wenn ich ein ORM benutze, sagen wir mit Zend oder Symfony. Ist es alles oder nichts?

Ich würde gerne das ORM verwenden, möchte aber in manchen Fällen auch die Leistung optimieren und die Abfrage selbst schreiben, um zur Sache zu kommen. Wenn ich also anfange, ein ORM zu verwenden, wird es schwierig sein, es auf die alte Art und Weise zu tun, sobald ich es in mein Projekt einfüge?

    
jblue 22.09.2010, 01:58
quelle

3 Antworten

9

In den meisten ORMs können Sie Ad-hoc-Abfragen ausführen.

p.campbell 22.09.2010, 02:02
quelle
6

Mit Doctrine ist es ziemlich einfach, das ORM "auszubrechen". In Doctrine können Sie Abfragen auf vier verschiedene Arten schreiben:

  • DQL. Doctrine-eigene Abfragesprache, die alle Vorteile von Doctrine bietet.
  • "rohe" DQL ("Native Abfragen" in Doctrine2). Dies ist ähnlich zu DQL, erlaubt aber etwas mehr Flexibilität bei Befehlen (z. B. datenbankspezifische Merkmale). In diesem Modus müssen Sie etwas mehr darüber angeben, wie Komponenten miteinander verwandt sind.
  • SQL, mit PHP's PDO. Sie können eine Doctrine_Connection verwenden, um eine PDO-Instanz abzurufen, mit der Sie Abfragen schreiben können, die aber dennoch die von PDO gewährte zusätzliche Sicherheit und Benutzerfreundlichkeit bietet.
  • Roh-SQL. Obwohl ich mir nicht sicher bin, warum du es haben willst, denke ich, dass Doctrine dies bietet, wenn nicht, könntest du immer ganz aus Doctrine ausbrechen.

Wenn Sie Doctrine innerhalb von Symfony verwenden, gibt es absolut keine Features von Symfony, die Sie daran hindern, Doctrine zu verwenden, selbst wenn es aktiviert ist.

Eine abschließende Warnung: Wenn Sie einige der erweiterten Funktionen von Doctrine (z. B. Ereignisse oder Verhaltensweisen) verwenden, wird es schwierig, diese zu verknüpfen, wenn Sie Abfragen außerhalb von DQL ausführen.

    
Jeremy Kauffman 22.09.2010 02:09
quelle
0

Sie können beliebig mischen und anpassen. Das Hauptrisiko besteht darin, inkompatible Inkonsistenzen zwischen Ihren Tools einzuführen. Hypothetisches Beispiel:

Wenn ich eine document2-ORM-Entität habe, die einen Benutzer genannt wird, und ich benutze Zend_Db_Table, um einige Werte zwischen Flushes in der Benutzertabelle zu ändern, kann es unbeabsichtigte Nebenwirkungen oder unerwünschtes Verhalten geben.

    
Mike Graf 24.04.2012 18:34
quelle

Tags und Links