Ho visto vari argomenti contro il DAO richiamato direttamente dalla classe Controller e anche il DAO dalla classe Model. Personalmente ritengo che se stiamo seguendo il modello MVC, il controller non dovrebbe accoppiarsi con il DAO, ma la classe Model dovrebbe invocare il DAO dall'interno e il controller dovrebbe invocare la classe del modello. Perché, perché possiamo separare la classe del modello da un'applicazione web ed esporre le funzionalità in vari modi come per un servizio REST per usare la nostra classe del modello.
Se scriviamo l'invocazione DAO nel controller, non sarebbe possibile per un servizio REST riutilizzare la funzionalità, giusto? Ho riassunto entrambi gli approcci di seguito.
Approccio n. 1
public class CustomerController extends HttpServlet {
proctected void doPost(....) {
Customer customer = new Customer("xxxxx","23",1);
new CustomerDAO().save(customer);
}
}
Approccio 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);
}
}
Nota -
Ecco cos'è una definizione di modello:
Modello: il modello gestisce il comportamento e i dati del dominio dell'applicazione, risponde alle richieste di informazioni sul suo stato (di solito dalla vista) e risponde alle istruzioni per cambiare stato (di solito dal controller).
Nei sistemi basati su eventi, il modello notifica agli osservatori (in genere visualizzazioni) quando le informazioni cambiano in modo che possano reagire.
Avrei bisogno di un parere di esperti su questo perché ne trovo molti che usano il numero 1 o il numero 2, quindi quale è?