Ich habe eine Entitätsklasse Person
und die zugehörige DTO-Klasse PersonDto
.
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.
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.
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.
Explizites Aufrufen von MapAssociation
schützt vor zukünftigen Umbenennungen von Eigenschaften.
Sie können sich die beiden am häufigsten verwendeten Object-Object-Mapper ansehen:
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?
MitValueInjecter 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
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
erhaltenDetails finden Sie hier: Ссылка