ModelMapper Java: Vollständige Anleitung mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

ModelMapper für Java: Vollständige Anleitung zum automatischen Object Mapping

1. Was ist ModelMapper und warum wird es benötigt?

ModelMapper ist eine leistungsstarke Java-Bibliothek für die automatische Konvertierung (Mapping) von Objekten eines Typs in Objekte eines anderen Typs. In der modernen Softwareentwicklung, insbesondere bei Verwendung einer mehrschichtigen Architektur (Controller → Service → Repository), müssen Entwickler ständig Daten zwischen DTOs (Data Transfer Objects), Entities (Datenbankentitäten), VOs (Value Objects) und anderen POJOs kopieren. Das manuelle Schreiben solchen Codes ist mühsam, fehleranfällig und führt zu aufgeblähtem Code sowie schlechterer Lesbarkeit.

Das Hauptziel von ModelMapper ist es, Entwickler vom Schreiben von Boilerplate-Code wie source.getField() → target.setField() zu befreien. Die Bibliothek analysiert die Klassenstruktur (Felder, Getter/Setter) und ordnet diese automatisch zu, basierend auf Namenskonventionen (Convention over Configuration). Sie unterstützt verschachtelte Objekte, Collections, Vererbung und komplexe Transformationen, was sie zu einem unverzichtbaren Werkzeug in Java-Unternehmensanwendungen macht.

ModelMapper ist besonders nützlich in folgenden Szenarien:

  • Anwendungsschichten: Konvertierung von Entities in DTOs und umgekehrt für die Datenübertragung über REST-APIs.
  • Microservices: Mapping zwischen Objekten verschiedener Dienste.
  • Refactoring: Wenn sich die Klassenstruktur ändert, genügt es, das Mapping an einer Stelle anzupassen.
  • Testing: Schnelles Erstellen von Testdaten auf Basis vorhandener Objekte.

2. Installation

ModelMapper wird über Maven Central bereitgestellt. Für die Installation muss die Abhängigkeit in die Datei pom.xml (für Maven) oder build.gradle (für Gradle) eingefügt werden.

Maven (pom.xml):

<dependency>
    <groupId>org.modelmapper</groupId>
    <artifactId>modelmapper</artifactId>
    <version>3.2.0</version>
</dependency>

Gradle (build.gradle):

implementation 'org.modelmapper:modelmapper:3.2.0'

Hinweis: Version 3.2.0 ist zum Zeitpunkt der Erstellung dieses Artikels aktuell. Es wird empfohlen, die neueste Version auf MVNRepository zu prüfen.

3. Schnellstart – Minimales funktionierendes Beispiel

Betrachten wir ein einfaches Beispiel: Wir haben eine Klasse UserEntity (Datenbankentität) und UserDTO (Datenübertragungsobjekt).

// Quellklasse (Entity)
public class UserEntity {
    private Long id;
    private String firstName;
    private String lastName;
    private String email;

    // Konstruktoren, Getter und Setter
    public UserEntity() {}
    public UserEntity(Long id, String firstName, String lastName, String email) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
        this.email = email;
    }

    public Long getId() { return id; }
    public void setId(Long id) { this.id = id; }
    public String getFirstName() { return firstName; }
    public void setFirstName(String firstName) { this.firstName = firstName; }
    public String getLastName() { return lastName; }
    public void setLastName(String lastName) { this.lastName = lastName; }
    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }
}

// Zielklasse (DTO)
public class UserDTO {
    private Long id;
    private String fullName; // Beachten Sie: Das Feld heißt anders
    private String emailAddress;

    // Konstruktoren, Getter und Setter
    public UserDTO() {}
    public Long getId() { return id; }
    public void                    

Empfehlungen