web-dev-qa-db-fra.com

Concepts DTO et DAO et MVC

1) Pourquoi utilisons-nous DTO et DAO, et quand devrions-nous les utiliser? Je développe actuellement un logiciel GUI Java pour l'insertion, l'édition et la suppression de données. Mais je me bats pour faire la distinction entre DTO/DAO et 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 d’avoir view et Controller dans une classe. Si nous pensons à Netbeans, vous pouvez créer GUI Frame Class et ajouter des composants tels que JButton sur le cadre. Double-cliquez sur le bouton pour accéder à la méthode actionListener (Controller ) qui semble être dans le cadre où les données doivent être affichées à l'utilisateur (Voir). Donc, ils sont dans la même classe. Est-ce que cela va complètement à l'encontre du concept alors ou non?

Ici c'est ce dont je parle

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

108
Hoody

DTO est 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, vos getters, vos setters et vos constructeurs.
  • DTO n'est pas recommandé d'ajouter des méthodes de logique métier à de telles classes, mais il est correct d'ajouter des méthodes util.

DAO est une abréviation de Data Access Object, de sorte qu'il doit encapsuler la logique de récupération, de sauvegarde et de mise à jour des données de votre stockage de données (une base de données, un système de fichiers, etc.).

Voici un exemple de la manière dont les interfaces DAO et DTO pourraient ressembler:

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

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

La MVC est un motif plus large. Le DTO/DAO serait votre modèle dans le modèle MVC.
Il vous explique 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, elle est tout à fait OK, cependant, si vous souhaitez suivre le modèle MVC, il serait mieux vaut avoir un contrôleur séparé, qui contiendrait la logique métier. pour votre cadre dans une classe séparée et distribuez des messages à ce contrôleur à partir des gestionnaires d'événements.
Ceci séparerait votre logique métier de la vue.

227
Petr