Einführung
Object-Relational Mapping (ORM) ist eine Technik, mit der Sie Daten aus einer Datenbank mithilfe eines objektorientierten Paradigmas abfragen und bearbeiten können. Wenn es um ORM geht, beziehen sich die meisten Leute auf eine Bibliothek , die die objektrelationale Zuordnungstechnik implementiert, daher der Ausdruck "ein ORM".
Eine ORM-Bibliothek ist eine ganz normale Bibliothek, die in der Sprache Ihrer Wahl geschrieben ist und den Code enthält, der zum Bearbeiten der Daten erforderlich ist, sodass Sie kein SQL mehr verwenden. Sie interagieren direkt mit einem Objekt in derselben Sprache, die Sie verwenden.
Hier ist zum Beispiel ein völlig imaginärer Fall mit einer Pseudosprache:
Wenn Sie eine Buchklasse haben, möchten Sie alle Bücher abrufen, deren Autor "Linus" ist. Manuell würden Sie so etwas tun:
book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
book = new Book();
book.setAuthor(row.get('author');
book_list.add(book);
}
Mit einer ORM-Bibliothek würde es so aussehen:
book_list = BookTable.query(author="Linus");
Das mechanische Teil wird automatisch über die ORM-Bibliothek erledigt.
Vor-und Nachteile
Die Verwendung von ORM spart viel Zeit, weil:
- DRY : Sie schreiben Ihr Datenmodell nur an einer Stelle und es ist einfacher, den Code zu aktualisieren, zu warten und wiederzuverwenden.
- Viele Dinge werden automatisch erledigt, von der Datenbankverwaltung bis hin zu I18N .
- Es zwingt Sie, MVC- Code zu schreiben , was Ihren Code letztendlich ein wenig sauberer macht.
- Sie müssen kein schlecht geformtes SQL schreiben (die meisten Webprogrammierer saugen wirklich daran, weil SQL wie eine "Sub" -Sprache behandelt wird, obwohl es in Wirklichkeit eine sehr leistungsfähige und komplexe Sprache ist).
- Desinfektion; Die Verwendung vorbereiteter Anweisungen oder Transaktionen ist so einfach wie das Aufrufen einer Methode.
Die Verwendung einer ORM-Bibliothek ist flexibler, weil:
- Es passt in Ihre natürliche Art der Codierung (es ist Ihre Sprache!).
- Es abstrahiert das DB-System, sodass Sie es jederzeit ändern können.
- Das Modell ist schwach an den Rest der Anwendung gebunden, sodass Sie es ändern oder an anderer Stelle verwenden können.
- Damit können Sie OOP-Güte wie Datenvererbung ohne Kopfschmerzen verwenden.
Aber ORM kann ein Schmerz sein:
- Sie müssen es lernen, und ORM-Bibliotheken sind keine einfachen Werkzeuge.
- Sie müssen es einrichten. Gleiches Problem.
- Die Leistung ist für normale Abfragen in Ordnung, aber ein SQL-Master kann mit seinem eigenen SQL für große Projekte immer besser abschneiden.
- Es abstrahiert die DB. Während es in Ordnung ist, wenn Sie wissen, was hinter den Kulissen passiert, ist es eine Falle für neue Programmierer, die sehr gierige Aussagen schreiben können, wie ein schwerer Treffer in einer
for
Schleife.
Wie lerne ich ORM kennen?
Verwenden Sie eine. Unabhängig davon, für welche ORM-Bibliothek Sie sich entscheiden, verwenden alle dieselben Prinzipien. Hier gibt es viele ORM-Bibliotheken:
Wenn Sie eine ORM-Bibliothek in der Webprogrammierung ausprobieren möchten, sollten Sie einen gesamten Framework-Stack wie folgt verwenden:
- Symfony (PHP, mit Propel oder Doctrine).
- Django (Python mit einem internen ORM).
Versuchen Sie nicht, Ihr eigenes ORM zu schreiben, es sei denn, Sie versuchen, etwas zu lernen. Dies ist eine gigantische Arbeit, und die alten haben viel Zeit und Arbeit in Anspruch genommen, bevor sie zuverlässig wurden.