1) Dlaczego używamy DTO
i DAO
, a kiedy powinniśmy z nich korzystać. Zajmuję się tworzeniem GUI
oprogramowania Java do czynienia z wstawianie, edytowanie, usuwanie danych. Ale ja jestem stara się odróżnić DTO/DAO
i Model
, View
, Controller
(MVC) Struktura? Czy są podobne, co jest lepsze w przypadku interakcji z bazą danych za pośrednictwem języka Java GUI
.
2) Jedno jestem bardzo ciekaw, czy jest to dobra praktyka, aby mieć view
i Controller
w jednej klasie. Jeśli się nad tym zastanowić Netbeans
, możesz stworzyć GUI
klasę ramki i dodać komponenty jak JButton
na ramkę, dwukrotne kliknięcie przycisku przeniesie Cię do actionListener
metody (Kontroler), która wydaje się być w ramce, w której dane mają być wyświetlane użytkownikowi (Widok) . Więc są w tej samej klasie. Czy jest to więc całkowicie sprzeczne z koncepcją, czy nie?
Oto o czym mówię
zła praktyka posiadania widoku i kontrolera w jednej klasie?
źródło
Odpowiedzi:
DTO
jest skrótem od Data Transfer Object , więc służy do przesyłania danych między klasami i modułami aplikacji.DTO
powinien zawierać tylko prywatne pola dla danych, metod pobierających, ustawiających i konstruktorów.DTO
nie zaleca się dodawania metod logiki biznesowej do takich klas, ale można dodać niektóre metody util.DAO
jest skrótem od Data Access Object , więc powinien zawierać logikę pobierania, zapisywania i aktualizowania danych w Twoim magazynie danych (baza danych, system plików, cokolwiek).Oto przykład, jak wyglądałyby interfejsy DAO i DTO:
interface PersonDTO { String getName(); void setName(String name); //..... } interface PersonDAO { PersonDTO findById(long id); void save(PersonDTO person); //..... }
MVC
Jest szerszy wzór. Model DTO / DAO byłby Twoim modelem we wzorcu MVC.Informuje, jak zorganizować całą aplikację, a nie tylko część odpowiedzialną za pobieranie danych.
Jeśli chodzi o drugie pytanie, jeśli masz małą aplikację to jest całkowicie OK, jednak jeśli chcesz podążać za wzorcem MVC, lepiej mieć osobny kontroler , który będzie zawierał logikę biznesową dla Twojej ramki w osobnej klasie i wysyłaj komunikaty do tego kontrolera z programów obsługi zdarzeń.
To oddzieliłoby logikę biznesową od widoku.
źródło