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


133

1) Для чого ми використовуємо DTOі DAO, і коли ми повинні ними користуватися. Я розробляю GUIпрограмне забезпечення Java, яке стосується вставки, редагування, видалення даних. Але я з усіх сил , щоб розрізняти DTO/DAOі Model, View, Controller(MVC) Структура? Чи схожі вони, що краще використовувати під час взаємодії з базою даних через Java GUI.

2) Одна річ , яку я дійсно цікаво, чи є це хороша практика , щоб мати viewі Controllerв одному класі. Якщо ми задумаємося Netbeans, ви можете створити GUIFrame Class і додати такі компоненти, як JButtonна кадр, подвійне клацання кнопки переведе вас до actionListenerметоду (Controller), який, здається, є у кадрі, дані повинні відображатися користувачеві (Перегляд) . Значить, вони в одному класі. Це повністю суперечить концепції тоді чи ні?

Ось про що я говорю

погана практика мати перегляд та контролер в одному класі?


@RomanC мають таблицю бази даних, яка містить події (eventId, ім'я, дата.etc), тож DTO і MVC, однакові чи різні?
Гуді

У базі даних у вас немає DTO, але об’єкти бази даних.
Роман C

@RomanC в класах Java вибачте, використовуючи структуру DTO / DAO або повинні використовувати MVC? яка різниця
Гуді

читайте це і те, щоб перевірити різницю
Роман C

ти читав про базу даних на другій деф?
Роман C

Відповіді:


269

DTOє абревіатурою для Object Transfer Data , тому використовується для передачі даних між класами та модулями вашої програми.

  • 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 для інтерфейсу об'єктної моделі - жахлива практика. недійсне збереження (PersonDTO person) - це чистий рак.
Бен

3
для чого нам потрібен DTO, коли у нас є об'єкти Class, такі як POJO? Хіба вони обидва однакові?
Бхаргав

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