Hallo zusammen,
hab eine Verständnisfrage. Irgendwie ergibt sich mir der Sinn eines DTO nicht. Ich könnte auch einen Constructor mit farbe, preis in Auto.java packen statt ein eigenes Objekt/Klasse dafür zu erstellen.
Ich habe 2 services, einen Datenservice welcher Daten aus der DB holt und bereit stellt und einen Shopservice, welcher Die Daten vom "Datenservice" holt, verarbeitet und an eine externe API schickt (zb Autoverkaufsportal oder sonst was)
Nun hab ich an einigen Stellen das Bedürfnis, nicht alle Daten eines Autos zu holen um Zeit und Last zu sparen. Zb fragt der Shopservice beim Datenservice nach einem Auto um dessen Preis und Farbe zu bekommen. Ich brauch an der Stelle nur die 2 Werte vom Auto und möchte nicht das gesamte Auto mit all seinen Relationen holen.
Dazu hab ich folgenden Dummycode
hab eine Verständnisfrage. Irgendwie ergibt sich mir der Sinn eines DTO nicht. Ich könnte auch einen Constructor mit farbe, preis in Auto.java packen statt ein eigenes Objekt/Klasse dafür zu erstellen.
Ich habe 2 services, einen Datenservice welcher Daten aus der DB holt und bereit stellt und einen Shopservice, welcher Die Daten vom "Datenservice" holt, verarbeitet und an eine externe API schickt (zb Autoverkaufsportal oder sonst was)
Nun hab ich an einigen Stellen das Bedürfnis, nicht alle Daten eines Autos zu holen um Zeit und Last zu sparen. Zb fragt der Shopservice beim Datenservice nach einem Auto um dessen Preis und Farbe zu bekommen. Ich brauch an der Stelle nur die 2 Werte vom Auto und möchte nicht das gesamte Auto mit all seinen Relationen holen.
Dazu hab ich folgenden Dummycode
Code:
class Auto(){
Integer id;
String name;
String farbe;
Double preis;
Motor motor;
List<Bilder> bilder;
Hersteller hersteller;
Getriebe getriebe;
//... getter Setter
}
Code:
public class AutoUpdateDto {
String farbe;
Double preis;
public AutoUpdateDto(String farbe, Double preis) {
//this...
//this...
}
//getter setter
}
Code:
@Controller
class AutoController(){
@GetMapping("/getAutoUpdateDto/{id}")
AutoUpdateDto getAutoUpdateDto(@PathVariable("id")int id) {
return repository.getAutoUpdateDto(id);
}
}
Code:
@Repository
public interface Repository..{
@Query("Select new com.domain.dto.AutoUpdateDto(a.farbe,a.preis) from Auto a where a.id = :id")
AutoUpdateDto getAutoUpdateDto(int id);
}