2017-05-18 8 views
0

Ich möchte nach einer guten Vorgehensweise fragen, um Entity mit zugehörigen Entitäten in DTOs zu konvertieren.Entität mit zugehöriger Entität zu DTO

So zum Beispiel habe ich 3 enities:

@Entity 
@Table 
public class First { 
    @Id 
    private int id; 

    @OneToMany(mappedBy = "first") 
    ... 
    private List<Second> second; 

    @ManyToOne 
    ... 
    private Third third; 


@Entity 
@Table 
public class Second { 
    @Id 
    private int id; 

    @ManyToOne 
    ... 
    private First first; 

    @OneToMany(mappedBy = "second") 
    ... 
    private List<Third> third; 



@Entity 
@Table 
public class Third { 
    @Id 
    private int id; 

    @ManyToOne 
    ... 
    private Second second; 

    @OneToMany(mappedBy = "third") 
    ... 
    private List<First> first; 

Was ist die beste Praxis alle diese DTO zu konvertieren? Ich möchte keine externen Bibliotheken verwenden.

Wie Sie sehen, ist das Problem mit der Wiederholung von es und verschachtelte assotations.

Grüße.

Edit: Kann mir jemand die Namen von Bibliotheken für die Mapping DTO selbst verwendet?

+1

Eine solche Abbildung von Einheit zu DTO und umgekehrt wird immer zu einem gewissen nicht-triviale Mapping-Code einkochen, in der Regel Reflexion beteiligt verwandten Bereichen zu lösen und Referenzen in Karten, um die Speicherung um Zyklen zu lösen. Am Ende des Tages wird dies in der Regel zu einem sehr zeitraubenden Projekt an sich selbst, und wahrscheinlich werden Sie das Rad neu erfinden. Ich würde dringend empfehlen, stattdessen nach einer geeigneten Zuordnungsbibliothek zu suchen. –

+0

Also gibt es keinen besseren Weg, das zu tun? Kannst du mir den Namen dieser Bibliothek nennen? Ich habe etwas über das Internet gefunden, aber vielleicht kannst du mir eines aus deiner Erfahrung geben. – Razikus

+1

Ich hatte gute Ergebnisse mit [Dozer] (http://dozer.sourceforge.net/). Es ist relativ einfach zu konfigurieren und deckt auch recht komplizierte Anwendungsfälle ab. Es behandelt leicht Zyklen und Vererbung. –

Antwort

2

helfen Dies könnte:

Ich empfehle die benutzerdefinierte dto verwenden Zyklen zu vermeiden (verursacht Stackoverflow). Vorteil, um den Inhalt zu verwalten, den Sie übertragen. Mit der obigen Entity-Klasse habe ich das untenstehende dto erstellt.

Ich habe Abhängigkeit für lombok wie
"org.projectlombok" % "lombok" % lombokVersion

in meinem Build.

Konstruiert meine Gewohnheit DTO

@Data 
public class FirstDTO implements Jsonable { 
    protected String id; 
    protected ThirdDTO third; 

    public FirstDTO(){} 

    @JsonCreator 
    public FirstDTO(@JsonProperty("id") String id, 
        @JsonProperty("third") Third third){ 
      this.id = id; 
      this.third = third; 
    } 
} 
Verwandte Themen