Ich habe verschiedene Argumente dafür gesehen, dass DAO direkt von der Controller-Klasse und auch von der Model-Klasse aufgerufen wird. Ich persönlich bin der Meinung, dass der Controller nicht mit DAO, sondern mit der Model-Klasse gekoppelt werden sollte, wenn wir dem MVC-Muster folgen sollte das DAO von innen aufrufen und der Controller sollte die Modellklasse aufrufen. Warum können wir die Modellklasse abgesehen von einer Webanwendung entkoppeln und die Funktionalitäten auf verschiedene Arten verfügbar machen, z. B. damit ein REST-Service unsere Modellklasse verwendet.
Wenn wir den DAO-Aufruf in den Controller schreiben, ist es für einen REST-Service nicht möglich, die Funktionalität wiederzuverwenden, oder? Ich habe beide Ansätze unten zusammengefasst.
Ansatz Nr. 1
public class CustomerController extends HttpServlet {
proctected void doPost(....) {
Customer customer = new Customer("xxxxx","23",1);
new CustomerDAO().save(customer);
}
}
Ansatz 2
public class CustomerController extends HttpServlet {
proctected void doPost(....) {
Customer customer = new Customer("xxxxx","23",1);
customer.save(customer);
}
}
public class Customer {
...........
private void save(Customer customer){
new CustomerDAO().save(customer);
}
}
Hinweis -
Hier ist eine Definition von Modell:
Modell: Das Modell verwaltet das Verhalten und die Daten der Anwendungsdomäne, antwortet auf Anfragen nach Informationen über den Status (normalerweise aus der Ansicht) und auf Anweisungen zum Ändern des Status (normalerweise vom Controller).
In ereignisgesteuerten Systemen benachrichtigt das Modell Beobachter (normalerweise Ansichten), wenn sich die Informationen ändern, damit sie reagieren können.
Ich würde eine Expertenmeinung dazu benötigen, da ich viele finde, die # 1 oder # 2 verwenden. Also welche ist es?