2008-09-18 65 views

Trả lời

20

Sự khác biệt chính giữa hai mô hình là thế này:

  • Trong ActiveRecord bạn có một đối tượng tên miền mà cả hai đều biết tất cả các logic kinh doanh và làm thế nào để tiết kiệm/cập nhật chính nó trong cơ sở dữ liệu, user.getLinkToProfile() và Người dùng :: tìm (1), Người dùng :: lưu (người dùng)

  • Trong mẫu DataMapper bạn có một đối tượng tên miền chứa tất cả logic nghiệp vụ, cho người dùng exmaple.getLinkToProfile() (hoặc một cái gì đó tương tự) nhưng biết không có gì là về cơ sở dữ liệu được đề cập, ngoài việc này bạn có ea mapper-đối tượng có trách nhiệm tiết kiệm, cập nhật, lựa chọn, vv đối tượng người dùng từ cơ sở dữ liệu trong đó sẽ có UserMapper :: tìm (1), UserMapper.save (user)

DataMapper là phức tạp có khả năng hơn sau đó ActiveRecord nhưng nó dễ dàng hơn nhiều để phát triển mô hình miền của bạn và cơ sở dữ liệu không đồng bộ sau đó với ActiveRecord.

2

Bản ghi hoạt động rất nặng, trình ánh xạ dữ liệu và đối tượng miền đang tách các mối quan tâm đó ra để bạn có một bộ mã được xác định hơn thực hiện các khía cạnh khác nhau cho các đối tượng "miền" hoặc "thực thể". Cá nhân tôi thích, không phải là bạn đã hỏi, đi với sự tách biệt thành đối tượng miền, trình ánh xạ dữ liệu, có thể sử dụng mẫu lắp ráp và thậm chí là mẫu truyền dữ liệu để đảm bảo phân tách rõ ràng những gì xảy ra với dữ liệu giữa cơ sở dữ liệu ở phía trên tầng của một ứng dụng.

... ngăn cách thanh lịch và đơn giản luôn hữu ích.

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