Zum Inhalt springen

Glossar · O

ORM

Object Relational Mapper. Bildet Datenbank-Tabellen als Klassen und Zeilen als Objekte ab, damit man in der Programmier-Sprache statt in SQL arbeitet.

Definition

ORM steht für Object Relational Mapper und bezeichnet eine Technik in der Softwareentwicklung, die eine Brücke zwischen objektorientierten Programmiersprachen und relationalen Datenbanken schlägt. Dabei werden Datenbanktabellen als Klassen und einzelne Datensätze als Objekte abgebildet. Dadurch können Entwickler Datenbankoperationen in der jeweiligen Programmiersprache durchführen, ohne direkt SQL schreiben zu müssen.

Das Ziel von ORM ist es, die Datenbankzugriffe zu vereinfachen und die Komplexität der Interaktion mit relationalen Datenbanken zu reduzieren. ORM-Frameworks übernehmen die Übersetzung von objektorientierten Operationen in SQL-Abfragen und die Rückübersetzung der Ergebnisse in Objekte. Dies erleichtert die Entwicklung und Wartung von Anwendungen, die Daten persistent speichern.

Was bedeutet das für Ihr Unternehmen?

Ein ORM beschleunigt die Entwicklung von Geschäftsanwendungen, weil Entwickler mit Kunden, Aufträgen oder Rechnungen als Objekte arbeiten statt mit handgeschriebenem SQL. Die Kehrseite zeigt sich bei wachsenden Datenmengen: Unbedacht genutzt erzeugt ein ORM unbemerkt Hunderte Einzelabfragen für eine einzige Seite, die dann spürbar langsam wird. Lädt eine Listenansicht in Ihrer Anwendung auffällig lange, ist das ein typischer Ansatzpunkt für eine Performance-Analyse.

Hintergrund und Geschichte

Die Idee, objektorientierte Programmierung mit relationalen Datenbanken zu verbinden, entstand in den 1990er Jahren, als objektorientierte Sprachen wie Java und C++ an Bedeutung gewannen. Relationale Datenbanken basieren hingegen auf einem anderen Modell, dem relationalen Modell, was zu einer sogenannten objektrelationalen Unverträglichkeit (englisch Object-Relational Impedance Mismatch) führte, also einem semantischen Unterschied zwischen den beiden Paradigmen.

Frühe ORM-Frameworks entstanden, um diese Diskrepanz zu überbrücken und Entwicklern eine einheitliche Schnittstelle zu bieten. Bekannte ORM-Lösungen sind beispielsweise Hibernate für Java, ActiveRecord für Ruby on Rails und Doctrine für PHP. Diese Frameworks wurden im Laufe der Zeit weiterentwickelt und sind heute integraler Bestandteil vieler Softwareprojekte.

Funktionsweise

Ein ORM-Framework erzeugt für jede Datenbanktabelle eine entsprechende Klasse, deren Attribute den Spalten der Tabelle entsprechen. Ein Objekt dieser Klasse repräsentiert eine einzelne Zeile in der Tabelle. Operationen wie Einfügen, Aktualisieren, Löschen und Abfragen werden über Methoden der Klassen durchgeführt.

Bei der Ausführung übersetzt das ORM die objektorientierten Befehle in SQL-Anweisungen, die von der Datenbank verstanden werden. Die Ergebnisse der SQL-Abfragen werden wiederum in Objekte umgewandelt. Dadurch können Entwickler mit Objekten arbeiten, ohne sich mit der Syntax und den Details von SQL auseinandersetzen zu müssen.

Einsatzgebiete

ORM wird vor allem in Anwendungen eingesetzt, die eine persistente Speicherung von Daten in relationalen Datenbanken benötigen. Typische Einsatzbereiche sind Webanwendungen, Enterprise-Software und mobile Apps, bei denen die Trennung von Geschäftslogik und Datenzugriff wichtig ist.

Darüber hinaus erleichtert ORM die Portabilität von Anwendungen, da die zugrundeliegende Datenbank durch Austausch des ORM-Treibers gewechselt werden kann, ohne dass der Anwendungscode stark angepasst werden muss. Dies ist besonders relevant bei der Entwicklung von Software, die auf unterschiedlichen Datenbanksystemen laufen soll.

Abgrenzung zu verwandten Konzepten

ORM unterscheidet sich von direkten SQL-Abfragen dadurch, dass es eine höhere Abstraktionsebene bietet und den Entwickler von der Datenbanksprache entkoppelt. Im Gegensatz zu reinen Datenbankzugriffs-Bibliotheken automatisiert ORM die Abbildung zwischen Objekten und relationalen Tabellen.

Im Vergleich zu NoSQL-Datenbanken, die oft dokumentenorientiert oder key-value-basiert sind, adressiert ORM speziell relationale Datenbanken. Während NoSQL-Datenbanken häufig eine andere Datenmodellierung erfordern, bleibt ORM auf das relationale Modell fokussiert. Alternativ gibt es auch Data Mapper, die ähnlich wie ORM arbeiten, aber eine klarere Trennung zwischen Objekten und Datenbankzugriffsschicht vorsehen.

Verwandte Begriffe

Passende Leistung

Sie möchten wissen, was das für Ihr Projekt bedeutet? Sprechen Sie uns an.

Zur Leistung: Datenbank-Systeme