2015-08-03 17 views
5

Tôi có một lớp 'container' với các trường được chứa trong một số bảng cơ sở dữ liệu và tôi sử dụng mẫu DAO để truy cập dữ liệu.Một DAO cho mỗi lớp 'container' hoặc một DAO cho mỗi bảng?

Câu hỏi đặt ra là, tôi có nên tạo một DAO duy nhất cho lớp 'container' này hay tốt hơn để có một DAO cho mỗi bảng và kết hợp dữ liệu của chúng?

Trả lời

10

Bạn nên thiết kế DAO theo nhu cầu ứng dụng của mình, chứ không phải bố cục cơ sở dữ liệu của bạn. Bắt đầu với một DAO, và nếu nó trở nên quá lớn, sau đó tái cấu trúc nó thành nhiều DAO theo cách có ý nghĩa với mã của bạn.

Toàn bộ điểm của DAO là ẩn bất kỳ khái niệm cơ sở dữ liệu nào (như bảng) từ ứng dụng của bạn. Ứng dụng của bạn chỉ nên xem nó như một dịch vụ với một số phương pháp hữu ích. Ví dụ, nếu ứng dụng của bạn cần một số dữ liệu người dùng đến từ cả bảng Người dùng và bảng EmailAddresses, mã ứng dụng của bạn không cần phải phối hợp hai DAO - nó sẽ gọi một phương thức DAO getUserDetails() và DAO sẽ ẩn thực tế là nhiều bảng cần phải được gọi.

Tôi đang đề xuất tùy chọn đầu tiên trong câu hỏi của bạn, nhưng tôi sẽ không hạn chế chính mình đối với quy tắc "một DAO cho mỗi lớp chứa".

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