DTO- und DAO-Konzepte und MVC [geschlossen]

133

1) Warum verwenden wir DTOund DAOund wann sollten wir sie verwenden. Ich entwickle eine GUIJava-Software zum Einfügen, Bearbeiten und Löschen von Daten. Aber ich habe Schwierigkeiten zu unterscheiden , DTO/DAOund Model, View, Controller(MVC) Struktur? Sind sie ähnlich, was besser bei der Interaktion mit der Datenbank über Java zu verwenden ist GUI.

2) Eine Sache , die ich wirklich bin neugierig, ob es eine gute Praxis zu haben viewund Controllerin einer Klasse. Wenn wir darüber nachdenken Netbeans, können Sie eine GUIRahmenklasse erstellen und Komponenten wie JButtonzum Rahmen hinzufügen. Durch Doppelklicken auf die Schaltfläche gelangen Sie zu der actionListenerMethode (Controller), die sich in dem Rahmen zu befinden scheint, in dem die Daten dem Benutzer angezeigt werden sollen (Ansicht). . Sie sind also in der gleichen Klasse. Verstößt das dann völlig gegen das Konzept oder nicht?

Hier ist, worüber ich spreche

schlechte Praxis, View und Controller in einer Klasse zu haben?

Hoody
quelle
@RomanC haben eine Datenbanktabelle, die Ereignisse (eventId, name, date.etc) enthält, also DTO und MVC, gleich oder verschieden?
Hoody
In der Datenbank haben Sie kein DTO, sondern Datenbankobjekte.
Roman C
@RomanC in den Java-Klassen Entschuldigung, DTO / DAO-Struktur verwenden oder sollte MVC verwenden? Was ist der Unterschied
Hoody
Lesen Sie dies und das überprüfen Sie den Unterschied
Roman C
Hast du beim zweiten Def über Datenbank gelesen?
Roman C

Antworten:

269

DTOist eine Abkürzung für Data Transfer Object und wird daher zum Übertragen der Daten zwischen Klassen und Modulen Ihrer Anwendung verwendet.

  • DTO sollte nur private Felder für Ihre Daten, Getter, Setter und Konstruktoren enthalten.
  • DTO Es wird nicht empfohlen, solchen Klassen Geschäftslogikmethoden hinzuzufügen, es ist jedoch in Ordnung, einige util-Methoden hinzuzufügen.

DAOist eine Abkürzung für Data Access Object und sollte daher die Logik zum Abrufen, Speichern und Aktualisieren von Daten in Ihrem Datenspeicher (eine Datenbank, ein Dateisystem usw.) enthalten.

Hier ist ein Beispiel, wie die DAO- und DTO-Schnittstellen aussehen würden:

interface PersonDTO {
    String getName();
    void setName(String name);
    //.....
}

interface PersonDAO {
    PersonDTO findById(long id);
    void save(PersonDTO person);
    //.....
}

Das MVCist ein breiteres Muster. Das DTO / DAO wäre Ihr Modell im MVC-Muster.
Hier erfahren Sie, wie Sie die gesamte Anwendung organisieren, nicht nur den Teil, der für den Datenabruf verantwortlich ist.

Was die zweite Frage betrifft, wenn Sie eine kleine Anwendung haben, ist dies völlig in Ordnung. Wenn Sie jedoch dem MVC-Muster folgen möchten, ist es besser, einen separaten Controller zu haben , der die Geschäftslogik für Ihren Frame in einer separaten Klasse enthält und Versenden von Nachrichten an diesen Controller von den Ereignishandlern.
Dies würde Ihre Geschäftslogik von der Ansicht trennen.

Petr
quelle
2
Wahrscheinlich habe ich die Frage falsch verstanden.
Petr
4
Ich bin mir nicht sicher, was Sie unter "separater Controller" verstehen. Nach meinen Messwerten sollte der Controller in MVC so dünn wie möglich sein und Ihre Geschäftslogik sollte in Ihren Modellen enthalten sein.
Paul Carlton
4
Die Verwendung von DTOs zur Schnittstelle des Objektmodells ist eine schreckliche Praxis. void save (PersonDTO person) ist reiner Krebs.
Ben
3
Warum brauchen wir DTO, wenn wir Klassenobjekte wie POJO haben? Sind sie nicht beide gleich?
Bhargav
3
@ Bhargav-DTOs werden verwendet, um kombinierte Ergebnisse mehrerer Entitäten (POJOs) oder begrenzte Ressourcen einer Entität zurückzugeben.
TheCoder