Concepts DTO et DAO et MVC [fermé]

133

1) Pourquoi utilisons-nous DTOet DAO, et quand devrions - nous les utiliser. Je développe un GUIlogiciel Java pour insérer, éditer, supprimer des données. Mais je me bats pour établir une distinction entre DTO/DAOet Model, View, Controller(MVC) Structure? Sont-ils similaires, ce qui est préférable d'utiliser lors de l'interaction avec la base de données via Java GUI.

2) Une chose qui m'intéresse vraiment est de savoir si c'est une bonne pratique à avoir viewet Controllerdans une classe. Si nous y réfléchissons Netbeans, vous pouvez créer une GUIclasse de cadre et ajouter des composants comme JButtonsur le cadre, un double-clic sur le bouton vous amènera à la actionListenerméthode (contrôleur) qui semble être dans le cadre où les données doivent être affichées à l'utilisateur (vue) . Ils sont donc dans la même classe. Cela va-t-il complètement à l'encontre du concept ou non?

Voici de quoi je parle

mauvaise pratique d'avoir vue et contrôleur dans une seule classe?

Sweat à capuche
la source
@RomanC a une table de base de données qui contient des événements (eventId, name, date.etc), donc DTO et MVC, identiques ou différents?
Sweat
Dans la base de données, vous n'avez pas DTO mais des objets de base de données.
Roman C
@RomanC dans les classes Java désolé, utilisant la structure DTO / DAO ou devrait-il utiliser MVC? Quelle est la différence
Sweat
lire ceci et cela vérifier la différence
Roman C
avez-vous lu sur la base de données à la deuxième définition?
Roman C

Réponses:

269

DTOest une abréviation de Data Transfer Object , il est donc utilisé pour transférer les données entre les classes et les modules de votre application.

  • DTO ne doit contenir que des champs privés pour vos données, getters, setters et constructeurs.
  • DTO n'est pas recommandé d'ajouter des méthodes de logique métier à de telles classes, mais il est acceptable d'ajouter des méthodes util.

DAOest une abréviation pour Data Access Object , il doit donc encapsuler la logique de récupération, de sauvegarde et de mise à jour des données dans votre stockage de données (une base de données, un système de fichiers, peu importe).

Voici un exemple de l'apparence des interfaces DAO et DTO:

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

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

Le MVCmodèle est plus large. Le DTO / DAO serait votre modèle dans le modèle MVC.
Il vous indique comment organiser l'ensemble de l'application, pas seulement la partie responsable de la récupération des données.

Quant à la deuxième question, si vous avez une petite application, c'est tout à fait OK, cependant, si vous voulez suivre le modèle MVC, il serait préférable d'avoir un contrôleur séparé , qui contiendrait la logique métier de votre cadre dans une classe distincte et envoyer des messages à ce contrôleur à partir des gestionnaires d'événements.
Cela séparerait votre logique métier de la vue.

Petr
la source
2
J'ai probablement mal compris la question.
Petr
4
Je ne sais pas ce que vous entendez par «contrôleur séparé». D'après mes lectures, le contrôleur dans MVC doit être aussi mince que possible et votre logique métier doit être encapsulée dans vos modèles.
Paul Carlton
4
Utiliser les DTO pour interfacer le modèle objet est une pratique terrible. void save (PersonDTO person) est un cancer pur.
Ben
3
pourquoi avons-nous besoin de DTO quand nous avons des objets de classe comme POJO? ne sont-ils pas les mêmes?
Bhargav
3
Les DTO @Bhargav sont utilisés pour renvoyer les résultats combinés de plusieurs entités (POJO) ou des ressources limitées d'une entité.
TheCoder