Objekt-relationales Mapping
摘要
Neben der vorgestellten Möglichkeit, in Programmiersprachen auf Daten einer Datenbank zuzugreifen, ist es genauso wichtig, Daten in die Datenbank effizient direkt zu schreiben und wieder zu lesen. Generell wurde mit JDBC dazu eine Möglichkeit gezeigt, allerdings ist diese in der Alltagsnutzung für objektorientierte Programmiersprachen recht aufwendig. Es muss individuell für jedes Klassenmodell festgelegt werden, welche Tabellen wie zu nutzen sind. Dabei ist auch festzulegen, wie mit Vererbung umgegangen werden muss. Statt diese Schritte individuell durchzuführen, bieten alle großen Programmiersprachen sogenannte Objekt-relationale-Mapper (OR-Mapper) zur Abbildung von Objekten auf Tabellen als Frameworks an. Dieses Kapitel gibt eine Einführung in die Nutzung und zeigt einige Klippen auf. Es wird deutlich, dass OR-Mapper die automatische Erstellung von Tabellen aus Klassen ermöglichen und die generelle Datenbanknutzung wesentlich vereinfachen. Es wird aber genauso deutlich, warum das bisher in diesem Buch gesammelte Wissen benötigt wird, um sinnvoll mit OR-Mappern zu arbeiten. Die Entwicklung von Datenbanken schreitet kontinuierlich voran, angebunden an die sie nutzende Technologie. Dabei stellt sich seit den 1990er Jahren die Frage, ob der relationale Ansatz basierend auf meist größeren Mengen an Tabellen immer sinnvoll ist. Mit dem Aufkommen der kommerziellen Nutzung der objektorientierten Programmierung wurden objektorientierte Datenbanken populär, da sie das Persistieren und Suchen von Objekten erleichterten. Dieser Vorteil wurde allerdings durch eine schwächere Performance gegenüber relationalen Datenbanken wieder zunichte gemacht. Generell lässt sich feststellen, dass relationale Datenbanken sich kontinuierlich durchgesetzt haben und in fast allen großen Projekten eingesetzt werden. Trotzdem bleibt die Frage spannend, ob andere Ansätze für spezielle Aufgaben nicht doch besser geeignet sind. Dabei bezieht sich „besser“ insbesondere auf die Performance sowie die einfachere und damit fehlerfreiere Entwicklung.