Objektorientierte Programmierung führt Entwickler häufig zu folgendem Problem:
Die Business-Logik basiert auf Objekten, aber die Datenbank arbeitet relational. Objekte müssen manuell in Tabellenstrukturen abgebildet oder aus diesen erstellt werden. Nicht selten widmen sich 30% bis 50% des Quellcodes ausschließlich dem Datenzugriff. Anhand des O/R-Mappers "OpenAccess" der Firma Vanatec wird eine Lösungsmöglichkeit für dieses Problem aufgezeigt.
Standardsoftware in der Versicherungsbranche - Betrachtung eines Paradigmenwe...
Blick auf das Wesentliche - O/R-Mapping mit .NET
1. Blick auf das Wesentliche
O/R – Mapping mit .NET
Detlef Sauerbrei
2. Die Symptome I
Identitätsproblem
Objekte haben eine implizite Identität
(Adresse im Hauptspeicher)
Dim p As New Person
...
Dim q As Person = p
Datensätze in Tabellen haben eine explizite Identität (Primärschlüssel)
Häufig erfüllen Primärschlüssel andere Zwecke als den der Identitätsherstellung
Dim r As DataRow = myDataSet.Tables(0).NewRow
r("id") = ...
2
3. Die Symptome II
Beziehungsproblem
Objekte verweisen mit Zeigern vom Parent auf die Children
(intuitiv)
parent.children.Add(c)
Datensätze verweisen umgekehrt mit Fremdschlüsseln von den
Children auf den Parent (nicht intuitiv)
rChild("idParent") = rParent("id")
3
4. Die Symptome III
Verhaltensproblem
OOP steht für einen Umgang mit einzelnen „Dingen“ (Objekte)
imperative Programmierung (C#, VB.NET)
For Each r As DataRow in myDataSet.Tables(0).Rows
r.Delete()
Next
RDBMS stehen für einen Umgang mit vielen „Dingen“ (Mengen)
deklarative Programmierung (SQL)
delete from Bestellpositionen where Menge=0
4
5. Beispiel: Personen und Anschriften
Jede Person hat mindestens eine Anschrift
Unter einer Anschrift können mehrere Personen leben.
Es sollen alle Anschriften einer Person angezeigt werden.
Es sollen alle Personen zu einer Anschrift angezeigt werden.
n:m – Beziehung
5
6. Datenmodell
Anschriften
a_ID
Personen_Anschriften
Land
P_ID
Postleitzahl
A_ID
Strasse
Ort
Personen
p_ID
Name
Vorname
GebDat
6