5

Có vẻ như với tôi rằng sự khác biệt duy nhất là Active Record có các phương thức CRUD trong lớp chứa dữ liệu, và mẫu Repository sử dụng lớp riêng biệt cho các phương thức chứa dữ liệu và CRUD, nhưng chắc chắn tôi sai.Sự khác nhau giữa hoạt động Record và Repository pattern là gì?

Sự khác nhau giữa mẫu Ghi hình hoạt động và Kho lưu trữ là gì? Khi nào tôi nên sử dụng mẫu nào?

Trả lời

5

Về cơ bản, giả định của bạn là chính xác. Các mô hình kho lưu trữ và DAO bên ngoài các mối quan tâm về sự kiên trì trong khi Active Record sẽ tiếp nhận chúng. Tôi đã thực sự thấy một số triển khai trong đó các lớp bản ghi hoạt động được tiêm với một cá thể kho lưu trữ cung cấp các mối quan tâm liên tục của chúng trong nội bộ.

Lý do lớn nhất để sử dụng mẫu Bản ghi hiện hoạt là đơn giản, đối tượng miền của bạn không nên quan tâm đến cách (hoặc thậm chí nếu) chúng được duy trì. Mẫu kho lưu trữ cung cấp sự thiếu hiểu biết liên tục cho các đối tượng miền của bạn bằng cách bên ngoài các mối quan tâm liên tục và cung cấp nó như một dịch vụ bên ngoài.

2

IMO, mẫu Kho lưu trữ giúp giảm số lượng truy vấn được thực hiện cho cơ sở dữ liệu vì nó đào tạo bạn suy nghĩ về giao dịch và thực hiện lệnh, trong khi với mô hình Active Record dễ dàng thực hiện cuộc gọi. save(), .fetch(), v.v. với sự bỏ qua liều lĩnh. Cơ sở dữ liệu có thể là một nút cổ chai đủ lớn nói chung, không làm cho nó tồi tệ hơn với các truy vấn không cần thiết.

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