Tôi đã sử dụng để thiết kế ứng dụng của mình xung quanh mô hình miền thiếu máu, vì vậy tôi có nhiều đối tượng kho lưu trữ, được đưa vào lớp dịch vụ nhận biết giao dịch lớn, chất béo. Mẫu này được gọi là tập lệnh Giao dịch. Nó không được coi là một thực hành tốt vì nó dẫn đến mã thủ tục, vì vậy tôi muốn chuyển sang thiết kế hướng miền.Thiết kế và giao dịch định hướng miền trong môi trường Spring
Sau khi đọc vài bài báo trên web, nghe bài nói chuyện của Chris Richardson về Parleys và đọc các chương DDD của POJOs in Action, tôi nghĩ tôi đã có bức tranh lớn.
Vấn đề là tôi không biết, cách tổ chức các giao dịch trong ứng dụng của mình. Chis Richardson trong cuốn sách của ông khẳng định:
Các tầng presentation xử lý các yêu cầu HTTP từ trình duyệt của người dùng bằng cách gọi mô hình miền trực tiếp hoặc gián tiếp thông qua một mặt tiền, mà như tôi được mô tả trong chương trước là hoặc là một POJO hoặc EJB.
Tốt cho đến nay, nhưng Srini Penchikala trên InfoQ article trạng thái:
Một số nhà phát triển thích quản lý các giao dịch trong các lớp DAO mà là một thiết kế nghèo. Điều này dẫn đến việc kiểm soát giao dịch quá chi tiết không mang lại sự linh hoạt trong việc quản lý các trường hợp sử dụng trong đó các giao dịch trải rộng trên nhiều đối tượng miền. Các lớp dịch vụ nên xử lý các giao dịch; theo cách này, ngay cả khi giao dịch kéo dài nhiều đối tượng miền, thì lớp dịch vụ có thể quản lý giao dịch vì trong hầu hết các trường hợp sử dụng, lớp Service xử lý luồng điều khiển.
Ok, vì vậy nếu tôi hiểu điều này một cách chính xác, lớp lưu trữ không được giao dịch, lớp dịch vụ (hiện nay mỏng hơn nhiều) là giao dịch (như trước đây trong mẫu kịch bản giao dịch). Nhưng nếu đối tượng miền được gọi trực tiếp bởi lớp trình bày thì sao? Có nghĩa là, đối tượng miền của tôi nên có hành vi giao dịch? Và làm thế nào để thực hiện nó trong môi trường Spring hoặc EJB?
Điều này có vẻ kỳ lạ đối với tôi, vì vậy tôi sẽ rất vui nếu có ai đó làm rõ điều đó. Cảm ơn bạn.
Tôi đã thêm thẻ java, vì nó liên quan đến tất cả các loại DI + ORM (không chỉ trong java, nhưng đó là ngữ cảnh của bạn) – Bozho