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.
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. –
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
Dies ist eine ziemlich gute Alternative: http://modelmapper.org/ – cosbor11