2010-03-09 21 views

Trả lời

3

DAO nên thực hiện các thao tác CRUD và ẩn các hoạt động đó khỏi người gọi. Vì vậy, bạn nên đóng gói kết nối.

Mặt khác, nếu các cấp trên đang điều phối các DAO (ví dụ: giao dịch) thì bạn cũng có thể chuyển kết nối vào DAO (và đóng nó ở cùng mức bạn đã mở, không phải trong DAO).

Điểm mấu chốt là ... nó thực sự phụ thuộc vào trách nhiệm mà mỗi lớp ứng dụng của bạn có. Người gọi có nên chăm sóc nơi DAO đang truy lục dữ liệu hay không? Nếu không, hãy đóng gói các kết nối.

+0

Tôi đã nghĩ đến việc tạo một nhà máy và có cuộc gọi DAO, đó là cơ bản đóng gói. –

+0

Các nhà máy DAO được sử dụng để sản xuất DAO (bê tông triển khai) cụ thể. Tôi không chắc tôi hiểu ý bạn là gì bằng cách "tạo một nhà máy và có cuộc gọi DAO"! –

+0

Xin lỗi, ý tôi là nhà máy kết nối chứ không phải nhà máy DAO. –

2

Đến đây từ một khả năng sử dụng thuần túy và quan điểm tiêu chuẩn tôi nghĩ rằng bạn muốn DAO để chăm sóc các kết nối. Đó là sau khi tất cả một chức năng chính của truy cập dữ liệu.

Cân nhắc việc sử dụng, bạn có muốn mã lớp trình bày/kinh doanh sử dụng DAO để biết đủ về cơ sở dữ liệu để tạo kết nối để chuyển đến DAO không? Điều gì sẽ xảy ra nếu bạn cần di chuyển cơ sở dữ liệu hoặc đặt tên lại nó, tại thời điểm đó, nó rất đẹp để có các kết nối được đóng gói.

Sử dụng DAO để quản lý các kết nối của riêng nó cũng làm cho việc sử dụng các đối tượng trong mã gọi nhanh hơn, tăng khả năng đọc tổng thể, IMO.

3

Tôi nghĩ bạn đã trả lời câu hỏi của riêng bạn. Mẫu thiết kế cơ bản giải thích DAO nên tạo/truy xuất kết nối (nói thông qua một nhà máy) và ẩn chúng khỏi bất kỳ người gọi nào như lớp tầng dịch vụ.

http://java.sun.com/blueprints/corej2eepatterns/Patterns/DataAccessObject.html

Bạn có thấy bất kỳ giá trị trong việc giữ bên ngoài này?

0

Tôi nghĩ điểm mấu chốt của DAO là bạn có thể trao đổi việc triển khai mà không cần phần còn lại của ứng dụng biết hoặc quan tâm. Tôi đã thực sự làm điều này trên một dự án. Giao diện DAO vẫn giữ nguyên nhưng chi tiết kết nối thay đổi để bạn KHÔNG thể hiển thị nó bên ngoài.

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