Концепции DTO и DAO и MVC

1) Почему мы используем DTO и DAO, и когда мы должны их использовать. Я разрабатываю программное обеспечение с GUI Java для вставки, редактирования, удаления данных. Но я изо всех сил пытаюсь провести различие между DTO/DAO и структурой Model, View, Controller (MVC)? Они похожи, что лучше использовать при взаимодействии с базой данных через Java GUI.

2) Одна вещь, которая меня действительно интересует, это хорошая ли практика иметь view и Controller в одном классе. Если мы подумаем о Netbeans, вы можете создать GUI Frame Class и добавить такие компоненты, как JButton во фрейм. Двойной щелчок по кнопке приведет вас к методу actionListener (Controller), который, как представляется, находится во фрейме, в котором данные должны отображаться в Пользователь (Просмотр). Так что они в одном классе. Это полностью противоречит концепции или нет?

Вот о чем я говорю

плохая практика иметь видение и контроллер в одном классе?

Ответ 1

DTO - это сокращение от Data Transfer Object, поэтому оно используется для передачи данных между классами и модулями вашего приложения.

  • DTO должен содержать только закрытые поля для ваших данных, методов получения, установки и конструкторов.
  • DTO не рекомендуется добавлять методы бизнес-логики в такие классы, но можно добавить некоторые методы util.

DAO - это аббревиатура от Object Access Object, поэтому она должна содержать логику для извлечения, сохранения и обновления данных в вашем хранилище данных (база данных, файловая система и т.д.).

Вот пример того, как будут выглядеть интерфейсы DAO и DTO:

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

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

MVC - это более широкая модель. DTO/DAO будет вашей моделью в паттерне MVC.
В нем рассказывается, как организовать целое приложение, а не только часть, отвечающую за поиск данных.

Что касается второго вопроса, если у вас небольшое приложение, все в порядке, однако, если вы хотите следовать шаблону MVC, было бы лучше иметь отдельный контроллер, который содержал бы бизнес-логику для вашего фрейма в отдельном классе. и отправлять сообщения этому контроллеру от обработчиков событий.
Это отделит вашу бизнес-логику от представления.