Wer durch die DTO-Hölle früherer J2EE-Versionen gegangen ist, als technikbedingt für jede Schicht eigene Daten-Klassen geschrieben und die Daten zwischen all diesen Klassen umkopiert werden mussten, weiß, welche Vereinfachung uns Spring und Java EE vor über einem Jahrzehnt gebracht haben. Aber wenn wir uns unsere aktuellen Architekturen und Entwurfsstile wie Hexagonale Architektur und DDD anschauen, merken wir, dass wir doch wieder Adapter und Transferobjekte benötigen – beispielsweise im Anticorruption Layer eines DDD Bounded Context. Mit anderen Worten: Wir müssen weiterhin Daten zwischen ähnlichen Strukturen abbilden. Für solche Bean-Mappings zwischen Entities, DTOs und vergleichbaren Strukturen wurden bisher oft die BeanUtils oder Dozer eingesetzt. Als Alternative bietet sich seit einiger Zeit MapStruct an, das auf Reflection verzichtet und stattdessen den Mapping-Code als Annotations-Prozessor zur Compile-Zeit generiert – für typsicheres und schnelles Mapping!
Dieser Vortrag stellt Version 1.2 von MapStruct vor, von den Grundlagen bis zu den flexiblen Mapping-Möglichkeiten. Wir schauen uns den generierten, lesbaren Code an und sehen, wie Project Lombok mit MapStruct zusammenarbeitet. Und schließlich fehlen auch ein paar Tipps und Tricks aus der Praxis nicht. Neben ein paar Folien wird es auch Live-Coding geben!