2009-02-04 46 views
7

Tôi đang xây dựng một ứng dụng bằng PHP và tôi đang sử dụng mẫu trình ánh xạ dữ liệu để truy cập DB của mình. Tôi đang cân nhắc việc sử dụng mẫu Observer để tất cả những người vẽ bản đồ của tôi quan sát các thực thể mà họ tạo ra, để họ có thể tự động lưu bất kỳ thay đổi nào vào cơ sở dữ liệu mà không phải phân tích lại chúng theo cách thủ công.Trình ánh xạ dữ liệu + Mẫu quan sát

Tôi đã tự hỏi nếu đây là một ý tưởng hay, hoặc nếu đó là thực hành xấu, vv? Tôi thường làm việc với một vài đối tượng được liên kết với nhau trong một hệ thống phân cấp, và tại thời điểm này phải phân tích từng đối tượng thành công cụ lập bản đồ theo cách thủ công, điều này khá tẻ nhạt, vì vậy chỉ cần cố gắng tìm ra giải pháp tốt hơn .

Xin cảm ơn, Jack

+0

Câu hỏi hay, hy vọng bạn nhận được một số câu trả lời hợp lý. – Asciant

Trả lời

3

Chắc chắn là một ý tưởng hay đối với tôi. Việc bạn đang làm tương tự như mẫu Unit Of Work nhằm theo dõi các thay đổi bạn đã thực hiện đối với các đối tượng được ánh xạ và cam kết (thường là một giao dịch) khi bạn đã hoàn tất.

Tôi tin rằng các dự án như OutletRepose cung cấp điều này cho bạn trong PHP cũng như giảm bớt một số cơn đau bản đồ, nhưng tôi chưa đích thân sử dụng chúng. Ngoài ra, có vẻ như hệ thống phân cấp đối tượng của bạn có thể được hưởng lợi từ việc được xem là Aggregates nếu bạn muốn đi theo con đường Domain Driven Design và hưởng lợi từ việc cách ly sạch sẽ mang lại.

-

Edit: nó cũng giống như eZ Components có một tính năng giải pháp khá đầy đủ PHP ORM, và Doctrine 2.0 được hình thành theo cách này quá.

-

Chỉnh sửa 2: Tôi sẽ không nhìn vào Propel hoặc Creole cho vấn đề bạn đang thảo luận. Creole không phải là một ORM, nhưng nhiều hơn một lớp trừu tượng DB giống như PDO - và dự án bây giờ chính thức là "Chết". Propel sử dụng mẫu ActiveRecord, không phải mẫu của DataMapper, do đó đối tượng miền của bạn kết thúc với trách nhiệm bền bỉ hơn nhiều và AFAIK không bao gồm cơ sở Unit Of Work.

+0

Xin chào, cảm ơn thông tin, tôi chắc chắn sẽ xem xét các dự án bạn đã đề cập. –

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