Conceitos de DTO e DAO e MVC [fechado]

133

1) Por que usamos DTOe DAO, e quando devemos usá-los. Estou desenvolvendo um GUIsoftware Java relacionado à inserção, edição e exclusão de dados. Mas eu estou lutando para distinguir entre DTO/DAOe Model, View, ControllerEstrutura (MVC)? Eles são semelhantes, o que é melhor usar ao interagir com o banco de dados por meio de Java GUI.

2) Uma coisa que me deixa curioso é se é uma boa prática ter viewe Controllerem uma aula. Se pensarmos Netbeans, você pode criar uma GUIclasse de quadro e adicionar componentes como JButtono quadro; clicar duas vezes no botão levará ao actionListenermétodo (Controller) que parece estar no quadro em que os dados serão exibidos ao usuário (Exibir) . Então eles estão na mesma classe. Isso vai completamente contra o conceito então ou não?

Aqui está o que eu estou falando

má prática ter visão e controlador em uma classe?

Um casaco com capuz
fonte
O @RomanC tem uma tabela de banco de dados que contém Events (eventId, nome, date.etc), então o DTO e o MVC são iguais ou diferentes?
16133 Hoody
No banco de dados, você não possui DTO, mas objetos de banco de dados.
Roman C
@RomanC nas classes Java desculpe, usando a estrutura DTO / DAO ou deveria estar usando MVC? qual é a diferença
Hoody
leia isto e aquilo verifique a diferença #
482 Roman C
você leu sobre o banco de dados na segunda definição?
Roman C

Respostas:

269

DTOé uma abreviação de Data Transfer Object , por isso é usada para transferir os dados entre classes e módulos do seu aplicativo.

  • DTO deve conter apenas campos particulares para seus dados, getters, setters e construtores.
  • DTO não é recomendado adicionar métodos de lógica de negócios a essas classes, mas não há problema em adicionar alguns métodos util.

DAOé uma abreviação de Data Access Object , portanto, deve encapsular a lógica para recuperar, salvar e atualizar dados em seu armazenamento de dados (um banco de dados, um sistema de arquivos, o que for).

Aqui está um exemplo de como seriam as interfaces DAO e DTO:

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

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

O MVCé um padrão mais amplo. O DTO / DAO seria seu modelo no padrão MVC.
Ele mostra como organizar todo o aplicativo, não apenas a parte responsável pela recuperação de dados.

Quanto à segunda pergunta, se você tem um aplicativo pequeno, tudo está bem; no entanto, se você deseja seguir o padrão MVC, seria melhor ter um controlador separado , que contivesse a lógica comercial do seu quadro em uma classe separada e envie mensagens para este controlador dos manipuladores de eventos.
Isso separaria sua lógica de negócios da visualização.

Petr
fonte
2
Provavelmente eu não entendi a pergunta.
Petr
4
Não sei ao certo o que você quer dizer com "controlador separado". Pelas minhas leituras, o controlador no MVC deve ser o mais fino possível e sua lógica de negócios deve ser encapsulada em seus modelos.
Paul Carlton
4
Usar DTOs para fazer interface com o modelo de objetos é uma prática terrível. salvar vazio (pessoa PersonDTO) é um câncer puro.
Ben
3
por que precisamos do DTO quando temos objetos de classe como POJO? não são ambos iguais?
precisa
3
Os DTOs do @Bhargav são usados ​​para retornar resultados combinados de várias entidades (POJOs) ou recursos limitados de uma entidade.
TheCoder 21/02/19