DTO und Entität in einem Objekt?

Inkognito

Ich bin derzeit in einem Dilemma und habe diesbezüglich gelesen.

Ich mache meine DTOs auch zu meinen Entitäten. Es sieht ungefähr so ​​aus:

@Entity
@PasswordMatches // custom validator
public class User {

    @Id
    @Column
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long id;

    @Column
    @NotNullOrEmpty // custom validator
    private String password;

    @Transient
    @NotNullOrEmpty // custom validator
    private String confirmPassword;

Frage 1 : Ist das akzeptabel oder gibt es einen besseren Weg, dies zu tun? Denn derzeit, bevor Userich ein speichere, habe ich das Passwort aus offensichtlichen Gründen gehasht, aber wenn ich es em.persist(user)direkt tue, wird es fehlschlagen, weil @PasswordMatcheses fehlschlägt. Es spart nur, wenn ich es user.setConfirmPassword(hashedPassword)nur tue , um die Validierung zu erfüllen. Mache ich hier das Richtige?

DuncanKinnear

Während EJB3 die Möglichkeit der Verwendung von Entitäten als DTOs zuließ, ist es in Wahrheit immer noch besser, separate DTOs zu haben.

Ziemlich bald werden Sie feststellen, dass Ihre Entitäten Anmerkungen zu bestimmten JPA-Anbietern (wie dem Ruhezustand) benötigen, die Ihre Entitäten an die Persistenzschicht binden. Dies bedeutet, dass, wenn Ihre Entitäten an Ihre Präsentationsschicht weitergegeben werden, diese Schicht über die spezifischen Bibliotheken / Frameworks Bescheid wissen muss, die Sie in Ihrer Persistenzschicht verwenden. Das ist kein großes Problem, wenn Sie Web-Sachen machen, aber wenn Sie reiche Kunden machen (z. B. Swing), kann dies zusätzliches Gepäck sein, das Ihre Kunden mit sich herumtragen müssen.

In ähnlicher Weise möchten Sie Ihre Entitäten für die Präsentationsebene mit @JsonAnmerkungen versehen (z . B. mithilfe von Anmerkungen). Wenn Sie diese in Ihre Entitäten einfügen, wird Ihre Persistenzschicht wieder mit Ihrer Präsentationsebene verknüpft.

Anfangs sind wir in die Falle geraten, unsere Entitäten zu verwenden, um Daten an unsere reichen Kunden weiterzugeben, aber wir hatten über 300 Entitätsklassen erstellt, als wir erkannten, dass wir sie in DTOs und Persistenzentitäten unterteilen mussten. Es war eine schmerzhafte Erfahrung, dies mit so vielen Entitäten zu tun, aber jetzt (mit über 400 Entitätsklassen) sind wir froh, dass wir es getan haben.

So, während es ist akzeptabel zu tun , was Sie tun, haben Sie bereits in ein Problem laufen , wo Business - Logik mit Ihrer Persistenz - Schicht Mischen hat ein Problem verursacht. Ich würde empfehlen, diese in DTOs und Entitäten aufzuteilen, um Ihnen auch in Zukunft Probleme zu ersparen.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

JUnit Wie assertTrue / Equals auf einem Optional und einem Objekt

Umwandlung von DTO in Entität und umgekehrt

Unterschied zwischen einem Objekt und einem Hash?

Das JSON-Objekt kann mit Spring Data Couchbase nicht von Couchbase auf DTO-Entität abgebildet werden

Behandeln Sie 2 Konvertierungen mit einem DTO-Objekt

Golang aktualisiert Karten und Variablen in einem Objekt

Speichern Sie eine Entität und alle zugehörigen Entitäten in einem einzigen Speichervorgang

Benennung von DTO- und Entitätsklassen

Das Speichern einer Entität mit einem zwischengespeicherten Objekt führt zu einer Ausnahme für getrennte Entitäten

Speichern Sie eine Entität und alle zugehörigen Entitäten in einem einzigen Speichervorgang

Wie setze ich ein enum DTO-Objekt mit einem enum VO-Objekt?

Wie füge ich ein neues Objekt in eine Entität ein und lege die Beziehung dieses Objekts zu einem vorhandenen Objekt einer anderen Entität fest?

Best Practice zum Abrufen von DTO und Entität mit Services und DAO bei Verwendung von Hibernate

javax.persistence.PersistenceException: org.hibernate.MappingException: Unbekannte Entität: it. *. PoolStateResult | Ordnen Sie ein Ergebnis einem DTO zu (keine Entität).

Zuordnen eines Dto zu einem Objekt mit ID

Symfony 4-Formulare, benutzerdefinierte DTO- und Entitätsbeziehungen

Wie ordne ich die Objekt-ID von DTO einem vorhandenen Objekt in der Datenbank zu?

Wie ordne ich ein DTO-Objekt einer Entität zu, wenn einige Eigenschaften im DTO fehlen?

Synchronisieren auf diesem und einem anderen Objekt

Erstellen Sie ein DTO, indem Sie die EF-Entität mit einem anderen Objekt in LINQ verbinden

Wie ordne ich eine Entitätseigenschaft einem Objekt zu, das aus einer Liste von Objekten einer anderen Entität stammt?

Was ist der Unterschied zwischen einem Data Transfer Object (DTO) und einem Proxy-Objekt?

Wie schiebe ich ein Objekt in ein in einem Objekt verschachteltes Array und behalte die Reaktivität in Vue bei?

Objekt auflösen und einem anderen Objekt in einer Zeile zuweisen

Dto an Entität und dto von Entität

Beziehung zwischen Entität und Objekt aus dem Dienst

Wenn der Dienst DTO keine Entität zurückgibt, wie wird DTO in einem anderen Dienst in Spring Boot behandelt?

DTO- und Entitätenzuordnung

Unterschied zwischen einem Array (numpy) und einem Index (pandas) Objekt?

TOP Liste

  1. 1

    TypeAhead.js zeigt keine Ausgangsschienen an?

  2. 2

    Wie lade ich eine Datei herunter, ohne den Typ oder Dateinamen zu kennen?

  3. 3

    So verschieben Sie ein Bild in Flutter/Dart mit einem Draggable

  4. 4

    Pandas rufen einen Wert basierend auf dem Index ab

  5. 5

    Unity Build-Fehler: Der Name 'EditorUtility' ist im aktuellen Kontext nicht vorhanden

  6. 6

    Wie kann ich eine verschachtelte Schleife mit lapply in R ersetzen?

  7. 7

    Interpolieren Sie mit Python die 2D-Matrix entlang der Spalten

  8. 8

    numpy: Berechnen Sie die Ableitung der Softmax-Funktion

  9. 9

    Warum funktioniert das Umgebungslicht in diesem Beispiel nicht?

  10. 10

    spring-data-jpa: ORA-01795: Die maximale Anzahl von Ausdrücken in einer Liste beträgt 1000

  11. 11

    Wie verwende ich Format-Table ohne Abschneiden von Werten?

  12. 12

    MongoDB eingebettetes Dokument unterscheiden und filtern

  13. 13

    So berechnen Sie die Verfügbarkeit von Anwendungen (SLA)

  14. 14

    Wie vermeide ich, dass die gesamte App neu geladen wird, wenn Nav.Link von React-Bootstrap verwendet wird?

  15. 15

    Aktualisieren des Werts im Json-Objekt in Python

  16. 16

    Wie aktualisiere ich ein Feld in einer Raumdatenbank mit einem Repository und einem Ansichtsmodell?

  17. 17

    Python gibt einen Fehler aus, dass eine Datei nicht vorhanden ist, wenn dies eindeutig der Fall ist

  18. 18

    Warum funktioniert Phantomjs nicht mit dieser Site?

  19. 19

    Docker bleibt beim Ausführen von time.sleep (1) in einer Python-Schleife hängen

  20. 20

    Überprüfen Sie, ob der ausgewählte Wert 'YES' ist, wenn ja, aktivieren Sie ein Steuerelement mit Javascript

  21. 21

    Deklarieren einer nicht initialisierten Variablen in der Klassendefinition in Python

heißlabel

Archiv