Концепции DTO и DAO и MVC [закрыто]


133

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

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

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

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


@RomanC имеет таблицу базы данных, которая содержит события (eventId, name, date.etc), поэтому DTO и MVC, одинаковые или разные?
Hoody

В базе данных нет DTO, но есть объекты базы данных.
Roman C

@RomanC в классах Java, извините, используя структуру DTO / DAO или должен использовать MVC? в чем разница
Hoody

прочитайте это и что проверить разницу
Roman C

вы читали о базе данных на втором деф?
Roman C

Ответы:


269

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

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

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

Вот пример того, как будут выглядеть интерфейсы 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, было бы лучше иметь отдельный контроллер , который бы содержал бизнес-логику для вашего фрейма в отдельном классе. и отправлять сообщения этому контроллеру из обработчиков событий.
Это отделит вашу бизнес-логику от представления.


2
Наверное, я неправильно понял вопрос.
Петр

4
Я не совсем понимаю, что вы подразумеваете под «отдельным контроллером». По моим оценкам, контроллер в MVC должен быть как можно более тонким, а ваша бизнес-логика должна быть инкапсулирована в ваших моделях.
Пол Карлтон

4
Использование DTO для взаимодействия с объектной моделью - ужасная практика. void save (PersonDTO person) - чистый рак.
Бен

3
зачем нам DTO, когда у нас есть объекты класса, такие как POJO? разве они не одинаковы?
Bhargav

3
@Bhargav DTO используются для возврата комбинированных результатов нескольких сущностей (POJO) или ограниченных ресурсов от сущности.
TheCoder
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.