[Suche] Mapper (DB-Entität auf P-Objekt mappen)

T

Tersus

Gast
Mahlzeit,

ich kenne mich hier leider nicht so gut aus. Bisher habe ich nur gewöhnlich programmiert.
Nun benötigt meine Anwendung aber Daten aus einer Datenbank. Ich weiß leider noch nicht, wie man diese Daten elegant konvertiert, bzw. überhaupt ausliest.

Ein Beispiel.

Datenmodell meiner Anwendung
Code:
       |-----|       |    
       | Ort |       |     public class Ort {
       |-----|       |    
          |          |       private Adresse adresse = null;
          | 1        |       
          |          |       ...
          |          |    
          |          |     }
          |          |    
          |          |     public class Adresse {
- adresse | 0..1     |    
          V          |       ...
     |---------|     |    
     | Adresse |     |     }
     |---------|     |
Ort verwaltet hier meine Adressen, aber die Adresse kennt den Ort gar nicht.


In der Datenbank sind die Daten aber anders angelegt.

Ort (O_ID, ...);
Adresse (A_ID, O_ID, ...)



Und nun ist die Datenbank auch noch größer, als hier dargestellt. Wie zieht man sich nun am elegantesten die Daten aus der Datenbank? Muss man sich hier programmiertechnisch selber einen Mapper bauen, oder gibt es schon gewisse Frameworks?

Ich bin echt dankbar für evtl. Aufklärungsversuche. ;)
 
Welche Sprache?
Wenn Java, dann kannst du dir mal Hibernate anschauen
Wenn C#, dann kannst du dir mal das Entity Framework anschauen (oder NHibernate)

Oder du suchst in Google einfach nach: [gewünschte sprache] orm
Da sollte sich was finden lassen

Auch könntest du dir selbst was zusammenbasteln. Je nachdem wie Komplex die DB-Struktur ist, ist das nicht mal so viel Aufwand (wenn die DB nur aus wenigen Tabellen besteht ist ein ORM sowieso etwas überdimensioniert)
 
Zuletzt bearbeitet:
War jetzt erstmal nicht auf eine Sprache bezogen.
Ich schaue mir gerade (N)Hibernate an.

Welche Option gibt es für C++?


Grüße
 
In PHP würde das z.B. nach Doctrine oder NotORM schreien...
Aber je nach Menge der Abfragen könnte es auch einfacher sein, die Querys selbst zu schreiben.
 
Ich benutze mittlerweile auch für kleine Projekte einen ORM (früher NHibernate, heute meist EF). Einfach weil der Overhead in den meisten Fällen vernachlässigbar ist, sich dafür aber, wenn die Anwendung größer wird, nicht die Mühe machen muss die ganzen SQLs raus zu operieren. Außerdem kann man dann sehr einfach die Datenbank austauschen und komfortabler ist es i. d. R. auch.

Unter Java finde ich neben Hibernate auch EclipseLink recht brauchbar. Dank JPA sehen die Java-ORMs aber eh alle recht ähnlich aus.
Ich hab auch noch ein C#-Altprojekt, das mit EntitySpaces arbeitet. EntitySpaces ist zwar mittlerweile tot (der Code ist aber jetzt Open Source), arbeitet im Gegensatz zu EF und NHibernate viel mehr mit Codegenerierung statt Reflection. Diese Technik hat in manchen Fällen Performancevorteile, ist aber auch weniger flexibel gegenüber Modelländerungen.
 
Unter Java kann man sich sonst auch noch Spring Data JPA anschauen, evtl. in Kombination mit QueryDSL.
 
Zurück
Oben