J'ai vu divers arguments contre le DAO appelé directement à partir de la classe Controller et également le DAO à partir de la classe Model.En fait, je pense personnellement que si nous suivons le modèle MVC, le contrôleur ne devrait pas être couplé au DAO, mais à la classe Model devrait appeler le DAO de l'intérieur et le contrôleur devrait invoquer la classe de modèle.Pourquoi, nous pouvons découpler la classe de modèle en dehors d'une application Web et exposer les fonctionnalités de différentes manières, comme pour un service REST d'utiliser notre classe de modèle.
Si nous écrivons l'invocation DAO dans le contrôleur, il ne serait pas possible pour un service REST de réutiliser la fonctionnalité, n'est-ce pas? J'ai résumé les deux approches ci-dessous.
Approche n ° 1
public class CustomerController extends HttpServlet {
proctected void doPost(....) {
Customer customer = new Customer("xxxxx","23",1);
new CustomerDAO().save(customer);
}
}
Approche n ° 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);
}
}
Remarque -
Voici ce qu'est une définition du modèle:
Modèle: le modèle gère le comportement et les données du domaine d'application, répond aux demandes d'informations sur son état (généralement à partir de la vue) et répond aux instructions de changement d'état (généralement à partir du contrôleur).
Dans les systèmes événementiels, le modèle avertit les observateurs (généralement des vues) lorsque les informations changent afin qu'ils puissent réagir.
J'aurais besoin d'un avis d'expert à ce sujet car j'en trouve beaucoup en utilisant # 1 ou # 2, alors lequel est-ce?