Konsep dan MVC DTO dan DAO [ditutup]

133

1) Mengapa kita menggunakan DTOdan DAO, dan kapan kita harus menggunakannya. Saya sedang mengembangkan GUIperangkat lunak Java yang harus dilakukan dengan memasukkan, mengedit, menghapus data. Tapi saya berjuang untuk membedakan antara DTO/DAOdan Model, View, Controller(MVC) Struktur? Apakah mereka serupa, yang lebih baik digunakan ketika berinteraksi dengan database melalui Java GUI.

2) Satu hal yang saya sangat ingin tahu adalah apakah itu praktik yang baik untuk dimiliki viewdan Controllerdalam satu kelas. Jika kita pikirkan Netbeans, Anda dapat membuat GUIKelas Bingkai dan menambahkan komponen seperti JButtonke dalam bingkai, mengklik dua kali tombol akan membawa Anda ke actionListenermetode (Pengendali) yang tampaknya berada dalam bingkai data yang akan ditampilkan kepada pengguna (Lihat) . Jadi mereka berada di kelas yang sama. Apakah itu benar-benar bertentangan dengan konsep itu atau tidak?

Inilah yang saya bicarakan

praktik buruk untuk memiliki tampilan dan pengontrol dalam satu kelas?

Hoody
sumber
@RomanC memiliki tabel database yang menampung Acara (eventId, nama, date.etc), jadi DTO dan MVC, sama atau berbeda?
Hoody
Di database Anda belum DTO tetapi objek database.
Roman C
@RomanC di kelas Java maaf, menggunakan struktur DTO / DAO atau harus menggunakan MVC? apa bedanya
Hoody
baca ini dan itu periksa perbedaannya
Roman C
apakah Anda membaca tentang database di def kedua?
Roman C

Jawaban:

269

DTOadalah singkatan untuk Data Transfer Object , sehingga digunakan untuk mentransfer data antara kelas dan modul aplikasi Anda.

  • DTO seharusnya hanya berisi bidang pribadi untuk data, getter, setter, dan konstruktor Anda.
  • DTO tidak disarankan untuk menambahkan metode logika bisnis ke kelas tersebut, tetapi tidak masalah untuk menambahkan beberapa metode util.

DAOadalah singkatan untuk Data Access Object , sehingga harus merangkum logika untuk mengambil, menyimpan, dan memperbarui data dalam penyimpanan data Anda (database, sistem file, apa pun).

Berikut adalah contoh tampilan antarmuka DAO dan DTO:

interface PersonDTO {
    String getName();
    void setName(String name);
    //.....
}

interface PersonDAO {
    PersonDTO findById(long id);
    void save(PersonDTO person);
    //.....
}

Ini MVCadalah pola yang lebih luas. DTO / DAO akan menjadi model Anda dalam pola MVC.
Ini memberi tahu Anda bagaimana mengatur seluruh aplikasi, bukan hanya bagian yang bertanggung jawab untuk pengambilan data.

Adapun pertanyaan kedua, jika Anda memiliki aplikasi kecil itu benar-benar OK, namun, jika Anda ingin mengikuti pola MVC akan lebih baik untuk memiliki pengontrol terpisah , yang akan berisi logika bisnis untuk frame Anda di kelas yang terpisah dan kirim pesan ke pengontrol ini dari penangan acara.
Ini akan memisahkan logika bisnis Anda dari tampilan.

Petr
sumber
2
Mungkin saya salah mengerti pertanyaan itu.
Petr
4
Saya tidak yakin apa yang Anda maksud dengan "controller terpisah". Dari bacaan saya, controller di MVC harus setipis mungkin dan logika bisnis Anda harus dienkapsulasi dalam model Anda.
Paul Carlton
4
Menggunakan DTO untuk antarmuka model Obyek adalah praktik yang mengerikan. void save (PersonDTO person) adalah kanker murni.
Ben
3
mengapa kita membutuhkan DTO ketika kita memiliki objek Class seperti POJO? Bukankah keduanya sama?
Bhargav
3
@Bhargav DTO digunakan untuk mengembalikan hasil gabungan beberapa entitas (POJO) atau sumber daya terbatas dari suatu entitas.
TheCoder