Saya telah melihat berbagai argumen terhadap DAO yang dipanggil dari kelas Controller secara langsung dan juga DAO dari kelas Model. Infact Saya pribadi merasa bahwa jika kita mengikuti pola MVC, controller tidak boleh digabungkan dengan DAO, tetapi kelas Model harus memanggil DAO dari dalam dan pengontrol harus memanggil kelas model. Mengapa, kita dapat memisahkan kelas model dari aplikasi web dan mengekspos fungsi untuk berbagai cara seperti untuk layanan REST untuk menggunakan kelas model kita.
Jika kita menulis permintaan DAO di controller, itu tidak mungkin untuk layanan REST untuk menggunakan kembali fungsi kan? Saya telah merangkum kedua pendekatan di bawah ini.
Pendekatan # 1
public class CustomerController extends HttpServlet {
proctected void doPost(....) {
Customer customer = new Customer("xxxxx","23",1);
new CustomerDAO().save(customer);
}
}
Pendekatan # 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);
}
}
Catatan -
Berikut adalah definisi Model:
Model: Model mengelola perilaku dan data domain aplikasi, merespons permintaan informasi tentang statusnya (biasanya dari tampilan), dan merespons instruksi untuk mengubah status (biasanya dari pengontrol).
Dalam sistem yang digerakkan oleh peristiwa, model memberi tahu pengamat (biasanya melihat) ketika informasi berubah sehingga mereka dapat bereaksi.
Saya perlu pendapat ahli tentang ini karena saya menemukan banyak menggunakan # 1 atau # 2, Jadi yang mana?