Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Arbeiten Mit DTO | RESTful API
Spring Boot Backend
course content

Kursinhalt

Spring Boot Backend

Spring Boot Backend

1. Grundlagen der Backend-Entwicklung
2. Spring Boot Grundlagen
3. RESTful API
4. Arbeiten mit Datenbanken
5. Testen von Backend-Anwendungen

book
Arbeiten Mit DTO

Die Verwendung von DTOs vereinfacht und optimiert den Datenaustausch, indem unnötige Felder ausgeschlossen werden und nur die Daten bereitgestellt werden, die ein bestimmter Client tatsächlich benötigt.

DTOs in diesem Beispiel dienen dazu, den Datenaustausch zwischen dem Client und dem Server zu begrenzen. Das ResponseBookDTO wird verwendet, um nur die notwendigen Daten (name, author, price) an den Client zu senden, während das RequestBookDTO es den Clients ermöglicht, die erforderlichen Daten (date, name, author, price) an den Server zu senden.

Der Hauptvorteil der Verwendung von DTOs besteht darin, dass sie helfen, Daten von der Geschäftslogik zu trennen und die Kontrolle darüber zu ermöglichen, welche Daten zwischen den Schichten der Anwendung übertragen oder in HTTP-Antwortnachrichten aufgenommen werden.

Wo wird das DTO angewendet?

DTOs werden verwendet, wenn Daten in einem bestimmten Format dargestellt werden müssen, beispielsweise zum Übertragen von Daten an einen Client oder zum Empfangen von Informationen von einem Client im Kontext einer REST-API.

Dies ist auch relevant, wenn zwischen Schichten in einer mehrschichtigen Architektur interagiert wird, wobei Daten zwischen Diensten und Repositories übertragen werden.

Beispiel aus der Praxis

Stellen Sie sich vor, Sie entwickeln eine Anwendung für einen Online-Shop. Sie haben eine Entität namens Product, die viele Informationen enthält: name, description, price, production date, discounts und so weiter.

Ein Client, der eine Liste von Produkten anfordert, benötigt nicht alle diese Informationen. Stattdessen können Sie ein DTO-Objekt erstellen, das nur die notwendigen Felder (wie Name und Preis) enthält, um diese Daten an den Client zu senden.

Beispiel der Verwendung

In unserer Anwendung ist das primäre Modell Book, das vom Client gesendet und vom Server zurückgegeben wird.

java

Main

copy
12345678
@Getter @Setter public class Book { private String id; private String name; private String author; private String price; }

Allerdings scheint es, dass das id-Feld unnötig ist, wenn Daten vom Client empfangen werden, da es auf Repository-Ebene generiert wird. Wir benötigen die id nur, wenn wir eine Antwort zurückgeben.

Hier kommen DTOs zur Rettung. Sie ermöglichen es uns, die Logik zu trennen und verschiedene Versionen des Book-Modells für Anfragen und Antworten zu erstellen, wobei unnötige Felder wie id ausgeschlossen werden, wo es angebracht ist.

In einem DTO wird ein Objekt mit dem request-Präfix verwendet, um Daten vom Client an den Server zu senden, während ein Objekt mit dem response-Präfix verwendet wird, um Daten vom Server an den Client zu senden. Diese Trennung stellt sicher, dass nur notwendige Daten ausgetauscht werden, was sowohl die Sicherheit als auch die Effizienz erhöht.

java

BookRequestDTO

java

BookResponseDTO

copy
12345
public class BookRequestDTO { private String name; private String author; private String price; }

Jetzt haben wir zwei DTOs: eines zum Empfangen von Anfragen BookRequestDTO und ein weiteres zum Senden von Antworten BookResponseDTO.

Sie werden feststellen, dass BookResponseDTO und unser Book Modell identisch sind, was die Frage aufwirft: Warum ein separates DTO erstellen, wenn wir einfach das Book Modell verwenden können?

Der Grund ist, dass wenn wir später entscheiden, zusätzliche Informationen hinzuzufügen, die nur auf der Service-Ebene benötigt werden, unser Book Modell am Ende unnötige Daten an die Repository-Ebene weitergeben würde, was uns dazu zwingt, sie irgendwie zu filtern.

Mapper

Um Objekte bequem von einem Typ in einen anderen zu transformieren, verwenden wir eine spezialisierte Bibliothek.

Wir können eine separate Klasse erstellen, in der wir statische Methoden definieren und die Logik für die Umwandlung von Objekten zwischen Typen implementieren.

MapperBook

MapperBook

copy
1234567891011
public class MapperBook { private static final ModelMapper mapper = new ModelMapper(); public static Book dtoRequestToModel(BookRequestDTO dto) { return mapper.map(dto, Book.class); } public static BookResponseDTO modelToResponseDto(Book book) { return mapper.map(book, BookResponseDTO.class); } }

In diesem Code verwendet die MapperBook Klasse die ModelMapper Bibliothek für die automatische Objekttransformation.

Es enthält zwei Methoden: die erste ist dtoRequestToModel(), die ein BookRequestDTO Objekt in ein Book Modell transformiert unter Verwendung der map Methode, und die zweite ist modelToResponseDto(), die ein Book Modell in ein BookResponseDTO Objekt konvertiert.

Dank ModelMapper wird der Prozess der Objekttransformation einfacher und bequemer, wodurch die Notwendigkeit entfällt, Felder manuell zu kopieren.

Hinzufügen eines DTO zu unserer Anwendung

Zusammenfassung

DTO (Data Transfer Object) ist ein einfaches Objekt, das für den Datentransfer zwischen Schichten oder Komponenten einer Anwendung konzipiert ist.

Im Kontext einer Drei-Schichten-Architektur spielt DTO eine entscheidende Rolle, indem es die Trennung der Schichten sicherstellt und eine effiziente Möglichkeit bietet, Daten zwischen ihnen auszutauschen.

Daher wird die Verwendung eines DTO zu einer optimalen Lösung, wenn es notwendig ist, Informationen zwischen verschiedenen Teilen einer Anwendung zu verwalten, um den Transfer von unnötigen oder irrelevanten Daten zu vermeiden.

1. Was ist ein DTO im Kontext der Programmierung?

2. Welche der folgenden Optionen ist die beste Verwendung eines DTO?

Was ist ein `DTO` im Kontext der Programmierung?

Was ist ein DTO im Kontext der Programmierung?

Wählen Sie die richtige Antwort aus

Welche der folgenden Optionen ist die beste Verwendung eines `DTO`?

Welche der folgenden Optionen ist die beste Verwendung eines DTO?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4
We're sorry to hear that something went wrong. What happened?
some-alt