Conceptos de DTO y DAO y MVC [cerrado]

133

1) ¿Por qué usamos DTOy DAO, y cuando debemos usarlos. Estoy desarrollando un GUIsoftware Java que tiene que ver con insertar, editar y eliminar datos. Pero estoy luchando para distinguir entre DTO/DAOe Model, View, ControllerEstructura (MVC)? Son similares, lo cual es mejor usar cuando interactúa con la base de datos a través de Java GUI.

2) Una cosa que realmente me interesa es si es una buena práctica tenerla viewy Controlleren una clase. Si pensamos en ello Netbeans, puede crear la GUIClase de cuadro y agregar componentes como JButtonen el cuadro, haciendo doble clic en el botón lo llevará al actionListenermétodo (Controlador) que parece estar en el cuadro donde los datos se mostrarán al usuario (Ver) . Entonces están en la misma clase. ¿Eso va completamente en contra del concepto entonces o no?

Aquí es lo que estoy hablando

¿Es una mala práctica tener vista y controlador en una clase?

Con capucha
fuente
@RomanC tiene una tabla de base de datos que contiene eventos (eventId, name, date.etc), ¿entonces DTO y MVC, iguales o diferentes?
Hoody
En la base de datos no tienes DTO sino objetos de base de datos.
Roman C
@RomanC en las clases de Java lo siento, usando la estructura DTO / DAO o debería estar usando MVC? ¿Cuál es la diferencia?
Hoody
lea esto y aquello marque la diferencia
Roman C
¿Leíste sobre la base de datos en la segunda definición?
Roman C

Respuestas:

269

DTOes una abreviatura de Data Transfer Object , por lo que se utiliza para transferir los datos entre clases y módulos de su aplicación.

  • DTO solo debe contener campos privados para sus datos, captadores, establecedores y constructores.
  • DTO No se recomienda agregar métodos de lógica de negocios a tales clases, pero está bien agregar algunos métodos de utilidad.

DAOes una abreviatura de Data Access Object , por lo que debe encapsular la lógica para recuperar, guardar y actualizar datos en su almacenamiento de datos (una base de datos, un sistema de archivos, lo que sea).

Aquí hay un ejemplo de cómo se verían las interfaces DAO y DTO:

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

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

El MVCes un patrón más amplio. El DTO / DAO sería su modelo en el patrón MVC.
Le indica cómo organizar toda la aplicación, no solo la parte responsable de la recuperación de datos.

En cuanto a la segunda pregunta, si tiene una aplicación pequeña, está completamente bien, sin embargo, si desea seguir el patrón MVC, sería mejor tener un controlador separado , que contendría la lógica de negocios para su marco en una clase separada y enviar mensajes a este controlador desde los controladores de eventos.
Esto separaría su lógica de negocios de la vista.

Petr
fuente
2
Probablemente entendí mal la pregunta.
Petr
44
No estoy seguro de lo que quieres decir con "controlador separado". Según mis lecturas, el controlador en MVC debería ser lo más delgado posible y su lógica de negocios debería estar encapsulada en sus modelos.
Paul Carlton
44
Usar DTO para interactuar con el modelo de objetos es una práctica terrible. nulo guardar (persona PersonDTO) es cáncer puro.
Ben
3
¿Por qué necesitamos DTO cuando tenemos objetos de clase como POJO? ¿No son los dos iguales?
Bhargav
3
Los DTO de @Bhargav se utilizan para devolver resultados combinados de varias entidades (POJO) o recursos limitados de una entidad.
TheCoder