Best Practice Saubere Verbindung zwischen API und Business Layer mit DTO's

igreex

Neues Mitglied
Guten Abend zusammen

Ich baue gerade eine Rest API mit Java (11) und Spring Boot und hadere seit Stunden mit dem gleichen Problem/Frage.

Ich habe POJO's für die Request Body's und DTO's für die Übergabe der Daten zwischen API und Business Layer. Der Service im Business Layer empfängt die DTO's mit folgenden zwei Methoden: `create(UserDTO user)`, `update(Long userId, UserDTO user)`.

Aktuell ist es so, dass ich mittels Mapper aus dem Request Objekt ein DTO erstelle und dieses dann an den Service gebe. Beim `create()` ist es ja ziemlich einfach, da ich dann einfach alle Felder verwende und daraus die Entität auf der DB erstelle.

Knifflig wirds nun beim `update()`. Wie erkenne ich am Besten, welche Felder sich im DTO geändert haben. Soll ich in der Methode im Service zuerst die Entität holen und dann Schritt für Schritt jedes Attribut durchgehen und schauen, ob es nicht gleich ist, oder einfach verschiedene Methoden im Service machen, bei welchen ich dann genau weiss, dass sie z.B. beim UserUpdate Endpoint aufgerufen werden?
 

Barista

Top Contributor
Ich selbst habe so etwas mal mit speziellen Holder-Objekten gemacht, die den ursprünglich aus der DB gelesenen Wert gespeichert hatten.

Im Multi-User-Betrieb ist das Lesen vor Update sicherer, eventuell wurde der Datensatz von jemand anderem geändert.

In einem anderen Projekt, das damals auf dem gleichen Flur lief, haben sie Change-Listener nach der Java-Bean-Spezifikation benutzt, eventuell auch eine Lösung.
 

mrBrown

Super-Moderator
Mitarbeiter
Deutlich sauberer wird das schon mal, wenn man explizite Klassen für verschiedene Operationen nutzt. Also nicht ein generisches UserDTO, was je nach Kontext was anderes ist, sondern zB ein CreateUserDto (wenn man bei der Dto-Benennung bleiben will), ein UpdateUserDto etc.


Biete an der Schnittstelle von Business-Layer und API Methoden an, die den Business-Funktionalitäten entsprechen, und nicht nur ein generisches "mache irgendwas".
Also z.B:
Der Nutzer kann seine Daten ändern => updateUser
Der Nutzer kann sein Passwort ändern => changePassword
Like-Count des Nutzers ändert sich (wie zb hier im Forum bei "Likes") => addLike/removeLike/setLikeCount o.ä.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Best Practice Testdaten. Was ist eine saubere Lösung? Java Basics - Anfänger-Themen 3
S Saubere Implementierung Java Basics - Anfänger-Themen 2
Luk10 Saubere Initialisierung im Konstruktor Java Basics - Anfänger-Themen 4
T Objektübergabe - saubere Lösung? Java Basics - Anfänger-Themen 3
L Saubere Programmbeendung (Konsole) Java Basics - Anfänger-Themen 7
C Frage zu try - catch (saubere Lösung?) Java Basics - Anfänger-Themen 3
K Saubere Ausgabe in HTML Java Basics - Anfänger-Themen 5
M FTP-Verbindung mit Apache Commons Net Java Basics - Anfänger-Themen 5
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
D Verbindung zu xampp Java Basics - Anfänger-Themen 4
C SFTP Verbindung nicht möglich Java Basics - Anfänger-Themen 4
G Socket Verbindung aufbauen Java Basics - Anfänger-Themen 11
B Quicksort in Verbindung mit einem Projekt Java Basics - Anfänger-Themen 1
S Verbindung von einer Excel Datei zu Java-- Java Basics - Anfänger-Themen 4
R Error, wenn mehrere Clients gleichzeitig die Verbindung beenden Java Basics - Anfänger-Themen 16
R Keine Verbindung mit MariaDB Java Basics - Anfänger-Themen 18
M Datenbank verbindung Java Basics - Anfänger-Themen 19
J Java Verbindung mit mysql Datenbank Java Basics - Anfänger-Themen 3
R Keine Verbindung zu MySql über Netbeans Java Basics - Anfänger-Themen 15
R Input/Output Verbindung mit mySql-Datenbank Java Basics - Anfänger-Themen 9
J toString-Methode in Verbindung mit varArgs-Konstruktor Java Basics - Anfänger-Themen 18
B Wie steht UML mit Java in Verbindung? Java Basics - Anfänger-Themen 1
P Schleife für insert() und delete() im StringBuilder in Verbindung mit indexOf() Java Basics - Anfänger-Themen 7
P Verbindung von Zwei Kreisen löschen ! Java Basics - Anfänger-Themen 6
D Eine MySQL Verbindung in mehreren Klassen Java Basics - Anfänger-Themen 8
Meeresgott OOP Socket Verbindung richtig Kapseln Java Basics - Anfänger-Themen 0
V Was bewirkt das Schlüsselwort extends in Verbindung mit class bzw. public class ? Java Basics - Anfänger-Themen 2
N httpclient - Verbindung hängt ? Java Basics - Anfänger-Themen 13
P Interface Verbindung GUI zum Programm Java Basics - Anfänger-Themen 2
V Arrays aus eigener Klasse erstellt, zuweisung aber spuckt Fehler in verbindung mit main Methode aus. Java Basics - Anfänger-Themen 3
A Erste Schritte Verbindung zu MySQL Datenbank herstellen Java Basics - Anfänger-Themen 7
M Junit Tests durchführen, die eine Verbindung zu einer Daten erfordern Java Basics - Anfänger-Themen 3
E mit java-anwendung internet verbindung unterbrechen Java Basics - Anfänger-Themen 5
L Verbindung von Anwendung mit GUI Java Basics - Anfänger-Themen 6
M Keine Datenbank verbindung Java Basics - Anfänger-Themen 14
S Https Verbindung aufbauen zum File Download Java Basics - Anfänger-Themen 7
H Problem mit Regex in Verbindung mit BufferedReader Java Basics - Anfänger-Themen 4
P Zugriff auf Attribute einer Klasse, zu der keine Verbindung besteht Java Basics - Anfänger-Themen 11
S Fehler beim Auslösen des ActionListeners in Verbindung mit einer Queue Java Basics - Anfänger-Themen 5
T socket.close aber verbindung besteht noch Java Basics - Anfänger-Themen 4
S Datentypen Regex in Verbindung mit einem Integer Wert Java Basics - Anfänger-Themen 3
E Input/Output Socket bekommt keine Verbindung bei funktionierendem Fremdziel Java Basics - Anfänger-Themen 2
0 Postgres verbindung Java Basics - Anfänger-Themen 4
F Verbindung zu MySql Datenbank Java Basics - Anfänger-Themen 4
B Verbindung zu einen anderen Rechner Java Basics - Anfänger-Themen 2
B Derby-Java-Verbindung Java Basics - Anfänger-Themen 2
I Datenbank - nach erster Verbindung keine Verbindung mehr Java Basics - Anfänger-Themen 3
J Access-Verbindung Java Basics - Anfänger-Themen 2
H Probleme mit .Jar in Verbindung mit Bildern Java Basics - Anfänger-Themen 10
S Verbindung Klassen<-> Klassen/DB Java Basics - Anfänger-Themen 2
E DB-Verbindung zu OpenOffice: Base Java Basics - Anfänger-Themen 3
J VPN Verbindung Java Basics - Anfänger-Themen 6
M Verbindung zu einem Server über Eclipse Java Basics - Anfänger-Themen 6
G FTP Verbindung in Applet Java Basics - Anfänger-Themen 3
S Java Applet - Verbindung zum Eigenen Server Java Basics - Anfänger-Themen 2
J DB-Verbindung Java Basics - Anfänger-Themen 2
TiME-SPLiNTER mehrere HTTPRequests mit selber Verbindung Java Basics - Anfänger-Themen 2
F Peer-to-Peer Verbindung? Java Basics - Anfänger-Themen 5
B Verbindung zur Datenbank (SQL.) Java Basics - Anfänger-Themen 13
R Java, Bluetooth: mit PC eine SPP Verbindung aufbauen Java Basics - Anfänger-Themen 1
G Link Verbindung Java Basics - Anfänger-Themen 2
G Verbindung zu einer Oracle DB aufbauen Java Basics - Anfänger-Themen 2
K Verbindung zu MySQL Java Basics - Anfänger-Themen 4
G Verbindung herstellen Java Basics - Anfänger-Themen 3
M Telnet Verbindung aufbauen Java Basics - Anfänger-Themen 2
M SQL Verbindung Java Basics - Anfänger-Themen 9
B Client - Server Verbindung über sockets mysql DB ansprechen? Java Basics - Anfänger-Themen 6
C Collection in Verbindung mit String.split speicherlastig Java Basics - Anfänger-Themen 20
G SSL Verbindung testen? Java Basics - Anfänger-Themen 1
J Problem mit forschleifen in Verbindung mit Kondtional operat Java Basics - Anfänger-Themen 2
M JSP --> Verbindung zur MySQL Datenbank geht nicht ! HILFF Java Basics - Anfänger-Themen 7
X 1 MySQL-Verbindung und viele Threads Java Basics - Anfänger-Themen 4
S Server/Client Verbindung Java Basics - Anfänger-Themen 2
R JDBC Verbindung geht nicht Java Basics - Anfänger-Themen 4
S MySQL-Verbindung Java Basics - Anfänger-Themen 4
G addKeyListener in verbindung mit JFrame !? Java Basics - Anfänger-Themen 2
D java in verbindung mit svg und html Java Basics - Anfänger-Themen 3
J Verbindung zu dbf Dateien Java Basics - Anfänger-Themen 6
D Verbindung von Methoden und Felder Java Basics - Anfänger-Themen 3
C string über server/client verbindung senden ? Java Basics - Anfänger-Themen 4
N SSH-Verbindung zu entferntem Rechner aufbauen Java Basics - Anfänger-Themen 5
G Programmstart mit JAR File - keine DB-Verbindung Java Basics - Anfänger-Themen 2
megachucky GUI-Problem in Verbindung mit while-Schleife und Listener Java Basics - Anfänger-Themen 4
C Kommunikation zwischen 2 Klassen Java Basics - Anfänger-Themen 9
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
S Unterschied zwischen Denkweisen Java Basics - Anfänger-Themen 13
O Klassen Zusammenspiel zwischen 2 Klassen Java Basics - Anfänger-Themen 1
Ras Unterschied zwischen parser xml and api xml Java Basics - Anfänger-Themen 7
X Was ist der Unterschied zwischen materialisierten und nichtmaterialisierten Attributen einer Klasse? Java Basics - Anfänger-Themen 1
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
S Längster Pfad zwischen zwei Vertices in einem Graph Java Basics - Anfänger-Themen 3
U Erste Schritte nextGaussian zwischen zwei Werten Java Basics - Anfänger-Themen 19
jhCDtGVjcZGcfzug Was ist der Unterschied zwischen diesen Quellcodes? Java Basics - Anfänger-Themen 3
rafi072001 Assoziation zwischen Musiker und Label Java Basics - Anfänger-Themen 1
A Parametar übergabe zwischen Methoden Java Basics - Anfänger-Themen 26
W User zwischen Optionen wählen lassen Java Basics - Anfänger-Themen 1
I Differenz zwischen LocalDateTime Java Basics - Anfänger-Themen 4
Leo_1789 Differenz ausrechnen zwischen denn idealgewicht und denn echten Gewicht Java Basics - Anfänger-Themen 7
E Wie gebe ich alle Daten zwischen zwei Zeitpunkten aus? Java Basics - Anfänger-Themen 2
P Methode die ausgibt wie viele Primzahlen es zwischen 2 und n gibt Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben