Sie sind hier:
Wissen
Telefon (Mo-Fr 9 bis 16 Uhr):
0201/649590-0
|
Kontaktformular
MENU
Medien
Übersicht
Lexikon/Glossar
Spickzettel
Weblog
Konferenzvorträge
Fachbücher
Fachartikel
Leserportal
Autoren gesucht!
Literaturtipps
Praxisnahe Fallbeispiele
Downloads
Newsletter
.NET
Startseite
.NET 8.0
.NET 7.0
.NET 6.0
.NET 5.0
.NET Core
.NET 4.0/4.5.x/4.6.x
.NET 3.0/3.5
.NET 2.0
.NET-Lexikon
Programmiersprachen
Entwicklerwerkzeuge
Klassenreferenz
Softwarekomponenten
Windows Runtime
World Wide Wings-Demo
Versionsgeschichte
Codebeispiele
ASP.NET
Artikel
Bücher
Schulung & Beratung
Konferenzen/Events
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
Forum
Schulung & Beratung
PowerShell
Startseite
Commandlet-Referenz
Codebeispiele
Commandlet Extensions
Versionsgeschichte
Schulungen+Beratung
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Scripting
Startseite
Lexikon
FAQ
Bücher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
.NET-Scripting
Forum
Schulung & Beratung
Nutzer
Anmeldung/Login
Buchleser-Registrierung
Gast-Registrierung
Hilfe
Website-FAQ
Technischer Support
Site Map
Tag Cloud
Suche
Kontakt
Erklärung des Begriffs: Objekt-Relationales Mapping (ORM)
Begriff
Objekt-Relationales Mapping
Abkürzung
ORM
Eintrag zuletzt aktualisiert am
24.05.2022
Zur Stichwortliste unseres Lexikons
Was ist
Objekt-Relationales Mapping
?
In der
Datenbank
welt sind relationale
Datenbank
en vorherschend, in der Programmierwelt sind es Objekte. Zwischen den beiden Welten gibt es erhebliche semantische und syntaktische Unterschiede, die man unter dem Begriff "Impedance Mismatch" (zu deutsch: Unverträglichkeit, vgl. [
https://dict.leo.org/englisch-deutsch/impedance%20mismatch
]) oder "Semantic Gap" (zu deutsch: demantische Lücke) zusammenfasst
Kern des objektorientierten Programmierens (
OOP
) ist die Arbeit mit Objekten als Instanzen von Klassen im Hauptspeicher. Die meisten Anwendungen haben dabei auch die Anforderung, in Objekten gespeicherte Daten dauerhaft zu speichern, insbesondere in
Datenbank
en. Grundsätzlich existieren objektorientierte
Datenbank
en (OODB), die direkt in der Lage sind, Objekte zu speichern. Aber objektorientierte
Datenbank
en haben bisher nur eine sehr geringe Verbreitung. Der vorherrschende Typus von
Datenbank
en sind relationale
Datenbank
en, die jedoch
Datenstruktur
en anders abbilden als Objektmodelle.
Um die Handhabung von relationalen
Datenbank
en in objektorientierten Systemen natürlicher zu gestalten, setzt die Software-Industrie seit Jahren auf O/R-Mapper (auch: OR-Mapper oder ORM geschrieben). O steht dabei für objektorientiert und R für relational. Diese Werkzeuge bilden demnach Konzepte aus der objektorientierten Welt, wie Klassen,
Attribut
e oder Beziehungen zwischen Klassen auf entsprechende Konstrukte der relationalen Welt, wie zum Beispiel Tabellen, Spalten und Fremdschlüssel, ab. Der Entwickler kann somit in der objektorientierten Welt verbleiben und den O/R-Mapper anweisen, bestimmte Objekte, welche in Form von Datensätzen in den Tabellen der relationalen
Datenbank
vorliegen, zu laden bzw. zu speichern. Wenig interessante und fehleranfällige Aufgaben, wie das manuelle Erstellen von INSERT-, UPDATE- oder DELETE-Anweisungen übernimmt hierbei auch der O/R-Mapper, was zu einer weiteren Entlastung des Entwicklers führt.
Zwei besonders hervorstechende Unterschiede zwischen Objektmodell und Relationenmodell sind N:M-Beziehungen und
Vererbung
. Während man in einem Objektmodell eine N:M-Beziehung zwischen Objekten durch eine wechselseitige
Objektmenge
abbilden kann, benötigt man in der relationalen
Datenbank
eine Zwischentabelle.
Vererbung
kennen relationale
Datenbank
en gar nicht. Hier gibt es verschiedene Möglichkeiten der Nachbildung, doch dazu später mehr.
ORM in der .NET-Welt
Wenn ein .NET-Entwickler aus einer
Datenbank
mit einem
DataReader
oder
DataSet
Daten einliest, dann betreibt er noch kein ORM.
DataReader
und
DataSet
sind zwar .NET-Objekte, aber diese verwalten nur Tabellenstrukturen.
DataReader
und
DataSet
sind aus der Sicht eines Objektmodells untypisierte, unspezifische
Container
. Erst wenn ein Entwickler spezifische Klassen für die in den Tabellen gespeicherten Strukturen definiert und die Inhalte aus
DataSet
oder
DataReader
in diese spezifischen
Datenstruktur
en umkopiert, betreibt er ORM. Solch ein "händisches ORM" ist für den Lesezugriff (gerade bei sehr breiten Tabellen) eine sehr aufwändige, mühselige und eintönige Programmierarbeit. Will man dann auch noch Änderungen in den Objekten wieder speichern, wird die Arbeit allerdings zur intellektuellen Herausforderung, denn man muss erkennen können, welche Objekte verändert wurden, da man sonst ständig alle Daten wieder speichert, was in Mehrbenutzerumgebungen ein Unding ist.
Während in der
Java
-Welt das ORM-Wekrzeuge schon sehr lange zu den etablierten Techniken gehört, hat Microsoft diesen Trend lange verschlafen bzw. es nicht vermocht, ein geeignetes Produkt zur Ma
rkt
reife zu führen. ADO.NET in
.NET 1.0
bis 3.5 enthielt keinen ORM, sondern beschränkt sich auf den direkten Datenzugriff und die Abbildung zwischen
XML
-Dokumenten und dem relationalen Modell.
Viele .NET-Entwickler haben sich daher daran gesetzt, diese Arbeit zu vereinfachen mit Hilfsbibliotheken und Werkzeugen. Dies war die Geburtsstunde eine großen Vielfalt von ORM-Werkzeuge für .NET. Dabei scheint es so, dass in dem geflügelten Wort, dass ein Mann in seinem Leben einen Baum gepflanzt, ein Kind gezeugt und ein Haus gebaut haben sollte, viele .NET-Entwickler die Punkte um "einen OR-Mapper geschrieben" ergänzt haben (wobei der Autor dieses Buchs sich davon nicht freisprechen kann, weil er auch keine OR-Mapper geschrieben hat). Anders ist die Vielfalt der ähnlichen Lösungen kaum erklärbar. Neben den öffentlich bekannten ORM-Werkzeugen für .NET findet man in den Unternehmen zahlreiche hauseigene Lösungen.
Bekannte öffentliche ORM für .NET von Drittanbietern (z.T.
Open Source
) sind:
nHibernate
Genome
LLBLGenPro
Wilson
Subsonic
OBJ.NET
.NET Data Objects (NDO)
Dapper
PetaPoco
Massive
Developer Express XPO
Telerik
Data Access (alias
Open Access
) * 2016 eingestellt
Neben den aktiven Entwicklern von ORM-Werkzeugen für .NET und den passiven Nutzern gibt eine noch größere Fraktion von Entwicklern, die ORM bisher nicht einsetzen. Meist herrscht Unwissenheit, die auch nicht aufgearbeitet wird, denn es herrscht das Motto "Wenn Microsoft es nicht macht, ist es auch nicht wichtig!".
Mit
LINQ-to-SQL
und dem
ADO.NET Entity Framework
sowie Entity Framework bietet Microsoft selbst aber inzwischen sogar drei verschiedene Produkte an. Microsoft hat aber inzwischen verkündet, dass die Weiterentwicklungsbemühungen sich allein auf das
Entity Framework Core
konzentieren.
Querverweise zu anderen Begriffen im Lexikon
ADO.NET Entity Framework (EF)
Entity Framework Core (EFC)
Datenstruktur
Open Source
Open Access
LINQ-to-SQL (LTS)
Objektmenge
nHibernate
DataReader
Container
Vererbung
Datenbank (DB)
Attribut
DataSet
Telerik
Java
.NET Framework 1.0 (.NET 1.0)
Rocket (rkt)
Extensible Markup Language (XML)
Objektorientiertes Programmieren (OOP)
Beratung & Support
Beratung/Consulting: Einsatz der Microsoft Azure-Cloud-Plattform als Alternative zu eigenen Servern und klassischem Hosting
Beratung/Consulting: WCF-Leistung / WCF-Performance: Optimierung der Windows Communication Foundation (WCF)
Beratung/Consulting: Plattformunabhängige Mobilanwendungen/App entwickeln: Cordova/PhoneGAP versus Xamarin versus React Native versus Flutter
Beratung/Consulting: Webanwendungen optimieren und skalieren (Website-Performance verbessern)
Beratung/Consulting: Cross-Plattform-Entwicklung / Cross-Plattform-Tools
Beratung/Consulting: ASP.NET-Leistung / ASP.NET-Performance
Beratung/Consulting: .NET/C# und Java/JEE im Vergleich: Welche Softwareentwicklungsplattform ist besser?
Beratung/Consulting: Umstellung/Migration/Umstieg von Windows Forms-Anwendungen von .NET Framework auf .NET 6.0/.NET 7.0
Beratung/Consulting: ADO.NET Entity Framework-Leistung / Entity Framework-Performance: Optimierung von Entity Framework-Datenzugriffen
Beratung/Consulting: WPF-Leistung / WPF-Performance: Optimierung der Windows Presentation Foundation (WPF)
Beratung/Consulting: .NET-Performanceprobleme / Leistungsprobleme
Beratung/Consulting: Microsoft SQL Server-Performanceprobleme / Datenbankoptimierung
Beratung/Consulting: Benutzerschnittstellentechnik auswählen (UI-/Frontend-Techniken)
Beratung/Consulting: Design und Usability ("User Experience - UX")
Beratung/Consulting: Review Ihres Softwareentwicklungsprozesses
Beratung/Consulting: Design und Usability ("User Experience - UX") von XAML-Anwendungen (WPF, UWP, WinUI, Xamarin, MAUI)
Beratung/Consulting: Machbarkeitsstudien
Beratung/Consulting: Entscheidung für ein Webframework: Angular versus React versus Vue.js versus Svelte
Beratung/Consulting: Umstellung/Migration/Umstieg von ASP.NET-Anwendungen von .NET Framework auf ASP.NET Core 6.0/7.0
Beratung/Consulting: Barrierefreiheit nach European Accessibility Act (EAA)
Beratung/Consulting: Machen Sie Ihr Unternehmen fit für Heimarbeit/Home Office
Beratung/Consulting: Umstellung/Migration/Umstieg von .NET Framework auf .NET 6.0/7.0
Beratung/Consulting: Design und Usability ("User Experience - UX") von modernen Webanwendungen
Beratung/Consulting: .NET versus .NET Core
Beratung/Consulting: Einrichtung und Absicherung von Terminal Servern/Remote Desktop Services/Virtual Deskops/Virtual Apps
Beratung/Consulting: Unit Testing und Test Driven Development: Pro und Contra
Beratung/Consulting: Berichte (Reporting, Dokumentengenerierung): SAP Crystal Reports versus List&Label versus TextControl versus Microsoft Reports/SQL Server Reporting Services
Beratung/Consulting: Einführung von Testautomatisierung, Unit Testing und Test Driven Development (TDD) in Ihrer Softwareentwicklung
Beratung/Consulting: Best Practices bei der Softwareentwicklung mit .NET/ASP.NET/WPF/WCF/Entity Framework u.a.
Beratung/Consulting: Entity Framework versus Entity Framework Core
Anfrage für Beratung/Consulting zu Objekt-Relationales Mapping ORM
Gesamter Beratungsthemenkatalog
Technischer Support zum Objekt-Relationales Mapping ORM
Schulungen zu diesem Thema
Objekt-Relationales Mapping (ORM) mit .NET
Entity Framework Core 8.0/9.0 (EF Core 8.0/9.0): Objekt-Relationales Mapping (ORM) für .NET 8.0/9.0 (komplettes Wissen)
NHibernate - Objekt-Relationales Mapping (ORM) mit .NET
ADO.NET Entity Framework (EF) mit Oracle - Objekt-Relationales Mapping für Oracle-Datenbanken
ADO.NET Entity Framework (EF) - Objekt-Relationales Mapping
Erstellung von Web-Anwendungen mit ASP.NET Webforms
Formatierung und Reporting mit der PowerShell
Native Script (Cross-Plattform-Entwicklung für iOS und Android)
Meteor: Moderne Web- und Mobil-Anwendungen mit JavaScript (oder TypeScript) auf der Meteor-Plattform
Webanwendungen mit Internet Information Server (IIS)
ASP.NET Webforms (System.Web) - Aufbauwissen
Umstieg von .NET-Desktop-Entwicklung (WPF/Windows Forms) auf Webentwicklung (ASP.NET/ASP.NET Core + JavaScript/TypeScript mit Webframeworks wie Angular, Vue.js oder React)
Oracle - Performance Tuning
Offlinefähige und installierbare Cross-Plattform-Lösungen mit Angular
Datenbankbasierte Webanwendungen mit ASP.NET Webforms
Webstorm (JavaScript-IDE von JetBrains)
Plattformneutrale Hybrid-Anwendungen mit HTML5 und JavaScript (oder TypeScript) mit Electron (Hosted/Hybrid Web Apps)
ASP.NET Webforms im Überblick - Weboberflächen mit .NET
Umstieg auf .NET Multi-Platform App UI (MAUI) (Umstellung/Migration von Xamarin Forms-Apps auf .NET MAUI)
Flutter: Cross-Plattform-Entwicklung für iOS (iPhone, iPad), Android, Web, Desktop und Embedded Devices
Performanceanalyse und Performancesteigerung (Tuning/Leistungstipps) von WPF-Anwendungen
ASP.NET Webforms (System.Web) - Profiwissen
Power Platform mit Microsoft Dynamics 365
High-Performance Java
Microsoft Azure-Cloud im Überblick - Microsofts Cloud Computing-Plattform
JavaScript und moderne Webanwendungen/Cross-Platform-Anwendungen für Entscheider
GUI-Programmierung mit der Rich Client Platform (RCP)
ASP.NET Webforms-Crashkurs (3 Tage)
.NET-Performance (Leistungsprobleme/Leistungsengpässe)
Microsoft SQL Server - Leistungsdiagnose und Leistungsoptimierung (Performance Tuning) der Datenbankstrukturen und von T-SQL
Anfrage für eine individuelle Schulung zum Thema Objekt-Relationales Mapping ORM
Gesamter Schulungsthemenkatalog
Bücher zu diesem Thema
Blazor 9.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 9.0, C# 13.0 und Visual Studio 2022
Blazor 8.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 8.0, C# 12.0 und Visual Studio 2022
Cross-Plattform-Apps mit .NET MAUI entwickeln
Cross-Plattform-Apps mit Xamarin.Forms entwickeln
Moderne Webanwendungen für .NET-Entwickler: Server-Anwendungen, Web APIs, SPAs & HTML-Cross-Platform-Anwendungen mit ASP.NET, ASP.NET Core, JavaScript
SQL Server 2014 für Professionals: Hochverfügbarkeit, Cloud-Szenarien, Backup/Restore, Monitoring & Performance
Alle unsere aktuellen Fachbücher
E-Book-Abo für ab 99 Euro im Jahr