2009-11-25 5 views
17

Ich versuche eine einfache Möglichkeit zu finden, DTOs zu Entitäten ohne den Code der Kesselplatte zuzuordnen. Während ich an die Verwendung von Dozer dachte, scheint es eine Menge von XML-Konfiguration zu erfordern. Hat jemand eine Dozer-Alternative gesehen, die eine DSL-Konfiguration verwendet, um das Bean-Mapping in reinem Java zu konfigurieren?Alternative zum Dozer für Bean Mapping?

Idealerweise hoffe ich, einen Bean Mapper zu finden, der von der Art und Weise, wie Guice Dinge macht, inspiriert ist.

+0

Eine andere Option wäre http://jtransfo.org/. Auf diese Weise können Zuordnungen mithilfe von Anmerkungen auf dem TO definiert werden. Es hat die zusätzliche Eigenschaft, dass Sie Sicherheits/optionale Konvertierungen basierend auf Tags haben können. –

+1

Werfen Sie einen Blick auf https://github.com/amgohan/zebra/: (DIY-Objekte Mapping und Zebra für die einheitliche Möglichkeit, Mapper zu injizieren.) Zebra kommen mit einem einfachen und einheitlichen Weg zu: erstellen Sie Ihre Mapper; Manage- und Reverse-Mapping in einer Klasse verwalten; registrieren Sie Ihre Mapper und verwenden Sie sie überall in Ihrer Anwendung wieder; Verwalten Sie Deep Mapping. – amgohan

+0

Dies ist eine ziemlich gute Alternative: http://modelmapper.org/ – cosbor11

Antwort

9

Ich suchte auch nach Alternativen.

Here ist eine sehr gute Abdeckung der verschiedenen Optionen.

16

Betrachten Sie Orika.

Orika ist ein Java Bean-Mapping-Framework, das (unter anderem) Daten rekursiv von einem Objekt in ein anderes kopiert. Es kann sehr nützlich sein, wenn Sie mehrschichtige Anwendungen entwickeln.

+0

Orika hat den Job für mich erledigt, ohne viel Aufwand den Fall der Sammlung von Mappings bearbeitet. Sehr mächtige und verwendbare Bibliothek IMO. –

3

Aus meiner Sicht ist die Konfiguration oder der Java-Code, um einige spezielle Eigenschaften zuzuordnen, immer benötigt.

Hier möchte ich eine DO und DTO zum Beispiel nehmen

DO:{ 
    id: "id", 
    name:"name", 
    doName1: "doName1", 
    nestedObj: { 
     id: "nestedObjId", 
     name: "nestedObjName" 
    } 
} 

DTO{ 
    id: "", 
    name: "", 
    name1: "" // for mapping doName1 in DO. 
    nestedId: "", //for DT.nestObj.id 
    nestedName: "", //for DT.nestObj.name 
} 

Für Dozer oder Orika sie beide automatisch ID und Name Eigenschaft zwischen DO und DTO ohne Konfiguration oder Java-Code übereinstimmen können, weil sie mit der sind gleiche Eigenschaftennamen und -typen. Aber wenn Sie DO.doName1 < ---->DTO.name1 oder DO.nestedObj.id < --->DTO.nestedId wollen, müssen Sie einige Konfiguration vornehmen (über XML oder Java), um das Mapping-Tool, das Sie beabsichtigen, zu tun. Ich denke, für Ihren Anwendungsfall, Dozer, Orika und ModelMapper sind alle in Ordnung. Aber für mich wechsele ich mein Projekt vom Bulldozer nach Orika. Obwohl Orika nicht so ausgereift ist wie der Bulldozer, ist es nicht so intelligent und verlangt von mir eine Menge zusätzlicher Arbeit, um meine angepassten Mapping-Konfigurationen aufrechtzuerhalten. Wenn Ihr Projekt sich nicht um die Leistung kümmert, empfehle ich Ihnen den Dozer, der so einfach zu bedienen ist und so viele erweiterte Funktionen unterstützt. Ansonsten, wenn Sie hohe Leistung kaufen, empfehle ich Ihnen orika.