DTO zum Entity Mapping Tool

8

Ich habe eine Entitätsklasse Person und die zugehörige DTO-Klasse PersonDto .

%Vor%

Nachdem ich ein DTO-Objekt erhalten habe, muss ich es in eine Person entity umwandeln. Jetzt mache ich es komplett manuell. Der Code sieht so aus.

%Vor%

Der Code ist in der Tat trivial. Aber mit der Anzahl der Entitäten wächst auch die Anzahl der Mapper-Klassen. Das Ergebnis ist viel ähnlicher Code. Ein anderes Problem ist, dass wenn ich Modus-Assoziationen habe, ich Konstruktor-Parameter für zusätzliche Repositories hinzufügen muss. Ich habe versucht, stattdessen eine Art Repository-Fabrik zu injizieren, aber es roch eine schlecht bekannte Service Locator , also kehrte ich zu einer originellen Lösung zurück.

Unit-Tests dieser Mapper ergeben auch eine Reihe von ähnlich aussehenden Testmethoden.

Mit all dem, was gesagt wurde, frage ich mich, ob es eine Lösung gibt, die den Umfang des manuell geschriebenen Codes reduzieren und den Komponententest vereinfachen kann.

Vielen Dank im Voraus.

AKTUALISIEREN

Ich hatte die Aufgabe mit Value Injecter erledigt, aber dann erkannte ich, dass ich sie sicher entfernen konnte und der Rest würde immer noch funktionieren. Hier ist die resultierende Lösung.

%Vor%

Die Zuordnung jeder Entität wird mit einer konkreten Klasse durchgeführt, die von BaseEntityMapper abgeleitet ist. Die für Person entities sieht so aus.

%Vor%

Explizites Aufrufen von MapAssociation schützt vor zukünftigen Umbenennungen von Eigenschaften.

    
Dmitriy Melnik 19.03.2012, 12:18
quelle

2 Antworten

6

Sie können sich die beiden am häufigsten verwendeten Object-Object-Mapper ansehen:

AutoMapper

  

AutoMapper ist eine einfache kleine Bibliothek, die täuschend gelöst wird   komplexes Problem - Beseitigung von Code, der ein Objekt zugeordnet hat   Ein weiterer. Diese Art von Code ist eher trostlos und langweilig zu schreiben, also   Warum erfinden Sie nicht ein Werkzeug, um es für uns zu tun?

Value Injecter

  Mit

ValueInjecter können Sie Ihr eigenes konventionsbasiertes Matching definieren   Algorithmen (ValueInjections), um die Quelle (inject) abzugleichen   Werte zu Zielwerten.

Es gibt einen Vergleichsartikel zu SO: AutoMapper vs ValueInjecter

    
nemesv 19.03.2012 12:24
quelle
1

Sie können GeDA zum Zuordnen einer Entität zu einem DTO-Objekt verwenden, entweder mit Anmerkungen oder DSL-Unterstützung.

Ссылка

Es gibt nur grundlegende Beispiele im Wiki, aber jUnits des Quellcodes sind voll mit nützlichen Beispielen

Sie können es von Sourceforge oder Google Code manuell oder über Maven-Abhängigkeit

erhalten

Details finden Sie hier: Ссылка

    
Denis 06.02.2013 00:27
quelle

Tags und Links