Như tôi đã hiểu, một lớp UnitOfWork có nghĩa là đại diện cho khái niệm về một giao dịch kinh doanh trong miền. Nó không phải là trực tiếp nghĩa vụ để đại diện cho một giao dịch cơ sở dữ liệu, mà là một chi tiết của chỉ có một thực hiện có thể.Mục đích của phương pháp Rollback trong mẫu Đơn vị công việc là gì?
Q: Vậy tại sao quá nhiều tài liệu về mẫu Đơn vị công việc đề cập đến phương pháp "Cam kết" và "Rollback"?
Các khái niệm này không có ý nghĩa gì đối với miền hoặc đối với các chuyên gia tên miền. Một giao dịch kinh doanh có thể được "hoàn thành", và do đó UnitOfWork nên cung cấp một phương thức "Hoàn thành". Tương tự như vậy, thay vì một phương pháp "Rollback", nó có nên được mô hình hóa là "Clear" không?
Cập nhật:
Trả lời: Cả hai câu trả lời dưới đây là chính xác. Họ là hai biến thể của UoW: đăng ký đối tượng và đăng ký người gọi. Trong đăng ký đối tượng, Rollback phục vụ để hoàn tác các thay đổi đối với tất cả các đối tượng trong bộ nhớ. Trong đăng ký người gọi, Rollback phục vụ để xóa tất cả các thay đổi được ghi lại, chẳng hạn như lệnh gọi Commit tiếp theo sẽ không làm gì cả.
Thú vị, cảm ơn. Mặc dù tôi có xu hướng không đồng ý rằng UoW chỉ liên quan đến RDBMS (những gì về DB đối tượng, hoặc bộ nhớ giao dịch). Dù sao, câu trả lời của bạn đã nhắc tôi làm nghiên cứu thêm và tôi tình cờ gặp http://takacsot.freeblog.hu/Files/martinfowler/unitOfWork.html. Tôi thấy có hai loại UoW: đăng ký người gọi và đăng ký đối tượng. Tôi đã sử dụng đối tượng đăng ký (thông qua các phiên NHibernate) nhưng tôi đã không nhận thức rõ ràng về mẫu UoW phía sau nó.Cảm ơn một lần nữa. –
@gWiz: bạn không đồng ý UoW là một chi tiết thực hiện? Nếu bạn đồng ý, thì điểm duy nhất tôi nhận được là các phương pháp bạn thảo luận với người dùng doanh nghiệp không xuất hiện trên UoW. Theo như RDBMS so với sự kiên trì khác, đây là một đối số ngữ nghĩa, người dùng doanh nghiệp của bạn vẫn không quan tâm - UofW áp dụng cho bất kỳ điều gì - câu trả lời của tôi đã được cập nhật vì nó không có nghĩa là chỉ áp dụng cho quan hệ. – orangepips
Thú vị. Tôi nghĩ rằng UoW là một chi tiết thực hiện, nhưng của khái niệm miền "giao dịch kinh doanh", điều quan trọng đối với các chuyên gia miền. Các chuyên gia không nói "Cam kết" hoặc "Rollback", nhưng họ có thể nói "nếu B không được chấp nhận, thì đừng thay đổi A". Đó là chỉ vì ý tưởng của một giao dịch kinh doanh được ẩn/dự kiến cho họ. Tôi sẽ lập luận rằng nhìn chung, các dịch vụ trong DDD phải có "Giao dịch" trong tên (và có thể sử dụng UoW khi triển khai). –