2017-04-25 5 views
0

In meinem Frühling Boot habe ich Benutzer @Entity wie:Federauflage Json mit JPA-Entitäten und DTO

Benutzer:

public class User { 
    private long id; 
    private String username; 
    private String password; 
    private String email; 
    private LocalDate birthday; 
    private boolean enabled = false; 
    private String firstName; 
    private String lastName; 
    private String address; 

    @ManyToMany(mappedBy = "users") 
    private Set<Game> games; 

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "gameOwner", orphanRemoval = true) 
    private List<Game> gamesOwned; 
} 

in Rest-API. Ich möchte User erstellen, also habe ich UserDto erstellt.

public class UserDto { 
    private String username; 
    private String password; 
    private String email; 
    private LocalDate birthday; 

    private String firstName; 
    private String lastName; 
    private String address; 
} 

Frage?

Ich habe User Einheit und DTO-Klasse. Um Benutzer zu erstellen benutze ich DTO Klasse. Um Benutzer zu bekommen, kann ich die DTO-Klasse nicht verwenden, da sie weniger Informationen enthält als ich außer. Sollte ich User Klasse mit @JsonIgnore annotieren oder ein anderes DTO erstellen?

+0

Was ist Ihre Frage, weil es unklar ist? –

+0

@AlanHay Ich habe gerade meine Frage bearbeitet :) – crooked

+0

Eine Möglichkeit besteht darin, DTOs zu vermeiden und direkt mit den Entitäten umzugehen. Manche Leute würden davon abraten, aber das ist eine Frage der Meinung. Mit diesem Ansatz können Sie eine vollständige REST-API mit praktisch keinem Code erstellen und die Module Spring Data und Spring Data Rest verwenden. https://spring.io/guides/gs/accessing-data-rest/ –

Antwort

0

Feld passwordConfirm ist gut für DTO-Klasse, aber keine Einheit. In DTO passen Sie password mit passwordConfirm, aber in der Entitätsklasse sollten diese beiden Felder den gleichen Wert haben, so dass Sie nicht zwei Felder dafür benötigen.

Und warum erstellen Sie UserInfos Klasse? Warum können Felder dieser Klasse nicht in der Klasse User stehen? Es kann weniger kompliziert sein, wenn Sie UserInfos Felder auf User Klasse setzen.

+0

Ich dachte, es wäre gut, "Details" von "Muss" -Eigenschaften zu trennen. Aber jetzt mit DTO-Klasse scheint es eigentlich ein bisschen zwecklos. – crooked