Khái niệm DTO và DAO và MVC [đã đóng]


133

1) Tại sao chúng ta sử dụng DTODAO, và khi chúng ta nên sử dụng chúng. Tôi đang phát triển một GUIphần mềm Java để thực hiện với việc chèn, chỉnh sửa, xóa dữ liệu. Nhưng tôi đang gặp khó khăn để phân biệt giữa DTO/DAOModel, View, Controller(MVC) Cấu trúc? Chúng có giống nhau không, tốt hơn để sử dụng khi tương tác với cơ sở dữ liệu thông qua Java GUI.

2) Một điều tôi thực sự tò mò là liệu đó có phải là một thực hành tốt để có viewControllertrong một lớp học hay không. Nếu chúng tôi nghĩ về Netbeans, bạn có thể tạo GUILớp Khung và thêm các thành phần như JButtonvào khung, nhấp đúp vào nút sẽ đưa bạn đến actionListenerphương thức (Trình điều khiển) có vẻ như trong khung mà dữ liệu sẽ được hiển thị cho người dùng (Xem) . Vì vậy, họ học cùng lớp. Điều đó có hoàn toàn đi ngược lại với khái niệm này hay không?

Đây là những gì tôi đang nói về

thực hành xấu để có xem và điều khiển trong một lớp?


@RomanC có một bảng cơ sở dữ liệu chứa các Sự kiện (eventId, name, date.etc), vậy DTO và MVC, giống hay khác nhau?
Hoody

Tại cơ sở dữ liệu, bạn không có DTO nhưng các đối tượng cơ sở dữ liệu.
La Mã C

@RomanC trong các lớp Java xin lỗi, sử dụng cấu trúc DTO / DAO hay nên sử dụng MVC? sự khác biệt là gì
Hoody

đọc nàyđó kiểm tra sự khác biệt
La Mã C

Bạn đã đọc về cơ sở dữ liệu ở def thứ hai?
La Mã C

Câu trả lời:


269

DTOlà tên viết tắt của Đối tượng truyền dữ liệu , vì vậy nó được sử dụng để chuyển dữ liệu giữa các lớp và mô-đun của ứng dụng của bạn.

  • DTO chỉ nên chứa các trường riêng cho dữ liệu, getters, setters và constructor của bạn.
  • DTO không nên thêm các phương thức logic nghiệp vụ vào các lớp như vậy, nhưng có thể thêm một số phương thức sử dụng.

DAOlà tên viết tắt của Đối tượng truy cập dữ liệu , do đó, nó sẽ gói gọn logic để truy xuất, lưu và cập nhật dữ liệu trong bộ lưu trữ dữ liệu của bạn (cơ sở dữ liệu, hệ thống tệp, bất cứ điều gì).

Dưới đây là một ví dụ về giao diện DAO và DTO trông như thế nào:

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

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

Đây MVClà một mô hình rộng hơn. DTO / DAO sẽ là mô hình của bạn trong mô hình MVC.
Nó cho bạn biết cách tổ chức toàn bộ ứng dụng, không chỉ là phần chịu trách nhiệm truy xuất dữ liệu.

Đối với câu hỏi thứ hai, nếu bạn có một ứng dụng nhỏ thì hoàn toàn ổn, tuy nhiên, nếu bạn muốn theo mô hình MVC, tốt hơnnên có một bộ điều khiển riêng , có chứa logic nghiệp vụ cho khung của bạn trong một lớp riêng biệt và gửi tin nhắn đến bộ điều khiển này từ bộ xử lý sự kiện.
Điều này sẽ tách logic kinh doanh của bạn khỏi chế độ xem.


2
Có lẽ tôi đã hiểu sai câu hỏi.
Petr

4
Tôi không chắc ý của bạn là "bộ điều khiển riêng biệt". Từ bài đọc của tôi, bộ điều khiển trong MVC phải càng mỏng càng tốt và logic nghiệp vụ của bạn nên được gói gọn trong các mô hình của bạn.
Paul Carlton

4
Sử dụng DTO để giao diện Mô hình đối tượng là một thực tế khủng khiếp. void save (PersonDTO người) là ung thư thuần túy.
Ben

3
Tại sao chúng ta cần DTO khi chúng ta có các đối tượng Class như POJO? Cả hai đều giống nhau?
Bhargav

3
@Bhargav DTO được sử dụng để trả về kết quả kết hợp của nhiều thực thể (POJO) hoặc tài nguyên giới hạn từ một thực thể.
TheCoder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.