2013-01-16 16 views
69

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

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

<a href="http://www.youtube.com/watch?v=Iwwznm9XSME">Here is what Im talking about</a> 

thực hành không tốt để có chế độ xem và bộ điều khiển trong một lớp?

+0

Bạn sử dụng DTO ở đâu? –

+0

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

+0

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. –

Trả lời

153

DTO là 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à constructors của bạn. 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 util.

DAO là từ viết tắt của đối tượng truy cập dữ liệu, vì vậy nó sẽ đóng gói logic để truy xuất, lưu và cập nhật dữ liệu trong lưu trữ dữ liệu của bạn (cơ sở dữ liệu, hệ thống tệp, bất kỳ thứ gì). Dưới đây là ví dụ về cách giao diện DAO và DTO trông như sau:

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

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

MVC là mẫu rộng hơn. DTO/DAO sẽ là mô hình của bạn trong mẫu 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 về việc 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ỏ, nó hoàn toàn OK, tuy nhiên nếu bạn muốn theo mẫu MVC thì tốt hơn nên có một bộ điều khiển riêng biệt, nó sẽ chứa logic nghiệp vụ cho khung của bạn một lớp riêng biệt và gửi tin nhắn đến bộ điều khiển này từ các trình xử lý sự kiện. Điều này sẽ tách logic nghiệp vụ của bạn khỏi chế độ xem.

+0

Câu hỏi đầu tiên là về sự khác biệt betweet DTO/DAO vs MVC, tôi nghĩ vậy. – madth3

+0

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

+0

Nếu tôi muốn thêm trình kích hoạt để bật/tắt một cái gì đó như 'PersonDAO.save()', tôi có thể đặt nó trực tiếp trong phương thức 'save()' không?Ngoài ra, đối với các bộ đếm hiệu suất cơ sở dữ liệu, tôi có thể thêm bộ hẹn giờ trực tiếp vào phương thức 'save()' không? Ngoài ra, nó có chấp nhận được để có một PersonDAO ref bên trong PersonDTO không? – BenR

Các vấn đề liên quan