Sie sind hier:
Lexikon/Glossar
Telefon (Mo-Fr 9-16 Uhr):
0201/649590-0
|
Kontaktformular
MENU
Start
Hauptseite
Angebote im Überblick
Kernkompetenzen
Softwareentwicklung
Beratung
Firmen-Schulungen
Offene Seminare
Online-Maßnahmen
Vorträge
Coaching
Support
Fachbücher
Fachartikel
Konditionen
Themen
Kernkompetenzen
Aktuelle Themen
Web & Cloud
Apps / Mobilplattformen
Benutzeroberflächen / User Experience
.NET
JavaScript / TypeScript
Java
Programmiersprachen
Entwicklungswerkzeuge
Scripting
Softwareengineering
Datenbanken / Reporting / BI
Betriebssysteme & Virtualisierung
Microsoft Server-Produkte
Windows & Office für Anwender
Soft Skills & IT-Recht
Beratung
Beratungsthemen
Coaching
Softwareentwicklung
Technischer Support
Unsere Top-Berater
Referenzkunden
Angebotsanfrage
Individuelle Schulungen
1026 Schulungsthemen
Agendakonfigurator
Weiterbildungsphilosophie
Didaktische Konzepte
Vor Ort oder online
Unsere Top-Trainer
Referenzkunden
Teilnehmerfeedback
Angebotsanfrage
Offene Seminare
.NET-Akademie
.NET/C#-Basisseminar
WPF
WinUI
.NET MAUI
Blazor
ASP.NET WebAPI & gRPC
Entity Framework Core
Unit Testing / TDD
PowerShell
Infotage
Wissen
Übersicht
Fachbücher
Fachartikel
Konferenzvorträge
Konferenzen/Events
Spickzettel
Lexikon/Glossar
Programmcodebibliothek
Versionshistorie
Weblog
Downloads
Newsletter
Community-/Leserportal
Registrierung
.NET/C#/Visual Studio
.NET 10.0
.NET 9.0
.NET 8.0
ASP.NET (Core)/Blazor
PowerShell
Über uns
Kontakt
Selbstdarstellung
Kernkompetenzen
Dr. Holger Schwichtenberg
Top-Experten
Leitung & Kundenteam
Referenzkunden
Kundenaussagen
Referenzprojekte
Partner
Konditionen
Stellenangebote
Weitere Websites
Impressum
Datenschutzerklärung, Haftung, Urheberrecht, Barrierefreiheit
Suche
Themenkatalog
Tag Cloud
Volltextsuche
Site Map
FAQs
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 Marktreife 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)
Extensible Markup Language (XML)
Objektorientiertes Programmieren (OOP)
Beratung & Support
.NET/C# und Java/JEE im Vergleich: Welche Softwareentwicklungsplattform ist besser?
.NET-Performanceprobleme / Leistungsprobleme
ASP.NET (Core)-Leistung / ASP.NET (Core)-Performance
Cross-Plattform-Entwicklung / Cross-Plattform-Tools
Einsatz der Microsoft Azure-Cloud-Plattform als Alternative zu eigenen Servern und klassischem Hosting
Entity Framework (Core)-Leistung / Entity Framework (Core)--Performance: Optimierung von Entity Framework-Datenzugriffen
Microsoft SQL Server-Performanceprobleme / Datenbankoptimierung
Plattformunabhängige Mobilanwendungen/App entwickeln: Cordova/PhoneGAP versus Xamarin versus React Native versus Flutter
Umstellung/Migration/Umstieg von Windows Forms-Anwendungen von .NET Framework auf das moderne .NET
WCF-Leistung / WCF-Performance: Optimierung der Windows Communication Foundation (WCF)
Webanwendungen optimieren und skalieren (Website-Performance verbessern)
WPF-Leistung / WPF-Performance: Optimierung der Windows Presentation Foundation (WPF)
Barrierefreiheit nach European Accessibility Act (EAA)
Design und Usability ("User Experience - UX")
Entscheidung für ein Webframework: Angular versus React versus Vue.js versus Svelte
Modernisierung von Windows-Anwendungen
.NET Framework versus .NET
.NET-Webservices mit WebAPI, SignalR, gRPC oder WCF/CoreWCF?
Benutzerschnittstellentechnik auswählen (UI-/Frontend-Techniken)
Berichte (Reporting, Dokumentengenerierung): SAP Crystal Reports versus List&Label versus TextControl versus Microsoft Reports/SQL Server Reporting Services
Best Practices bei der Softwareentwicklung mit .NET, ASP.NET (Core), WPF (Core), WCF/CoreWCF, Entity Framework (Core) u.a.
Best Practices für moderne Webanwendungen mit HTML5, CSS3 und JavaScript
Design und Usability ("User Experience - UX") von modernen Webanwendungen
Design und Usability ("User Experience - UX") von XAML-Anwendungen (WPF, UWP, WinUI, Xamarin, MAUI)
Einführung von Testautomatisierung, Unit Testing und Test Driven Development (TDD) in Ihrer Softwareentwicklung
Einrichtung und Absicherung von Terminal Servern/Remote Desktop Services/Virtual Deskops/Virtual Apps
Entity Framework versus Entity Framework Core
Machbarkeitsstudien
Machen Sie Ihr Unternehmen fit für Heimarbeit/Home Office
Review Ihres Softwareentwicklungsprozesses
Anfrage für Beratung/Consulting zu OBJEKT-RELATIONALES MAPPING ORM
Gesamter Beratungsthemenkatalog
Technischer Support zum OBJEKT-RELATIONALES MAPPING ORM
Schulungen
Performanceanalyse und Performancesteigerung (Tuning/Leistungstipps) von Webanwendungen und JavaScript
Uno Platform - Cross-Plattform-GUI-Anwendungen mit .NET und XAML
Plattformneutrale Hybrid-Anwendungen mit HTML5 und JavaScript (oder TypeScript) mit Miletus
Terraform
Umstieg auf .NET Multi-Platform App UI (MAUI) (Umstellung/Migration von Xamarin Forms-Apps auf .NET MAUI)
Microsoft Power Platform - Development
Hybride Anwendungen mit .NET und CefSharp (Einbindungen von Webanwendungen in WPF- und Windows Forms-Desktopanwendungen)
Avalonia - Cross-Plattform-GUI-Anwendungen mit .NET und XAML
.NET Akademie: .NET MAUI: .NET-/C#-Cross-Plattform-Entwicklung für Android, iOS (iPhone, iPad) und Windows (3-Tages-Agenda des öffentlichen Seminars)
.NET Multi-Platform App UI (MAUI)
.NET-Performance (Leistungsprobleme/Leistungsengpässe)
ADO.NET Entity Framework (EF) - Objekt-Relationales Mapping
ADO.NET Entity Framework (EF) / Entity Framework Core (EF Core) - Performance-Tuning / Leistungsoptimierung
ADO.NET Entity Framework (EF) mit Oracle - Objekt-Relationales Mapping für Oracle-Datenbanken
ASP.NET Webforms (System.Web) - Aufbauwissen
ASP.NET Webforms (System.Web) - Basiswissen
ASP.NET Webforms (System.Web) - Datenzugriff
ASP.NET Webforms (System.Web) - Profiwissen
ASP.NET Webforms im Überblick - Weboberflächen mit .NET
ASP.NET Webforms-Crashkurs (3 Tage)
Cordova - Plattformübergreifende mobile Anwendungen für Android, Apple iOS, RIM Blackberry, Windows Phone, Windows 8/10, u.a.
Cross-Plattform-Entwicklung mit Cross-Plattform-Tools im Vergleich
Datenbankbasierte Webanwendungen mit ASP.NET Webforms
Entity Framework Core 8.0/9.0/10.0 (EF Core 8.0/9.0/10.0): Objekt-Relationales Mapping (ORM) für .NET 8.0/9.0/10.0 (komplettes Wissen)
Erstellung von Web-Anwendungen mit ASP.NET Webforms
Flutter: Cross-Plattform-Entwicklung für iOS (iPhone, iPad), Android, Web, Desktop und Embedded Devices
Formatierung und Reporting mit der PowerShell
GUI-Programmierung mit der Rich Client Platform (RCP)
High-Performance Java
High-Performance/Leistungsoptimierung bei MySQL oder MariaDB
Anfrage für eine individuelle Schulung zum Thema OBJEKT-RELATIONALES MAPPING ORM
Gesamter Schulungsthemenkatalog
Fachbücher
Blazor 10.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 10.0, C# 14.0 und Visual Studio 2026
Moderne Datenzugriffslösungen mit Entity Framework Core 10.0
.NET 10.0 Update: Die Neuerungen in .NET 10.0 gegenüber .NET 9.0
Blazor 9.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 9.0, C# 13.0 und Visual Studio 2022
Cross-Plattform-Apps mit .NET MAUI entwickeln
Moderne Datenzugriffslösungen mit Entity Framework Core 9.0
.NET 9.0 Update: Die Neuerungen in .NET 9.0 gegenüber .NET 8.0
.NET 8.0 Update: Die Neuerungen in .NET 8.0 gegenüber .NET 7.0
Blazor 8.0: Moderne Webanwendungen und hybride Cross-Platform-Apps mit .NET 8.0, C# 12.0 und Visual Studio 2022
Moderne Datenzugriffslösungen mit Entity Framework Core 8.0
Cross-Plattform-Apps mit .NET MAUI entwickeln
Blazor 7.0: Blazor WebAssembly, Blazor Server und Blazor Hybrid
Moderne Datenzugriffslösungen mit Entity Framework Core 7.0
Moderne Datenzugriffslösungen mit Entity Framework Core 6.0
Blazor 6.0: Blazor WebAssembly, Blazor Server und Blazor Desktop
Cross-Plattform-Apps mit Xamarin.Forms entwickeln
Moderne Datenzugriffslösungen mit Entity Framework Core 5.0
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