Không được dùng nữa. Nó phụ thuộc vào kiến trúc ứng dụng nếu mẫu DTO nên được sử dụng hay không. Ví dụ, khi bạn phát triển các dịch vụ Web (sử dụng JAX-WS hoặc JAX-RS), bạn nên gửi DTO qua các phương thức web của bạn để ứng dụng khách C# hoặc Python có thể sử dụng nó và phương thức web của bạn không trả về một đối tượng mà lớp đó có Chú thích Hibernate, hãy nhớ hơn các ngôn ngữ khác, Entity sẽ không được tạo ra với những chú thích hoặc logic kinh doanh khác bên trong.
EDIT (Dựa trên nhận xét của bạn): Điều đó tùy thuộc vào kiến trúc phần mềm. Ví dụ, tôi đang làm việc trên một dự án SOA và chúng tôi sử dụng DTO cho Lớp dịch vụ và Lớp trình bày. Bên trong sâu hơn, chúng tôi sử dụng DTO để xử lý giao tiếp cơ sở dữ liệu bên trong dịch vụ, chúng tôi chỉ sử dụng SP để giao tiếp với DB, vì vậy không có Hibernate hoặc bất kỳ công cụ ORM nào khác có thể làm việc ở đó, chúng tôi có thể sử dụng Spring DAO và khuôn khổ đó cũng sử dụng DTO. Bạn có thể tìm thấy rất nhiều mẫu DTO trong nhiều ứng dụng hiện nay.
Thông tin thêm đó sẽ là tuyệt vời cho câu hỏi này:
EDIT 2: Một nguồn thông tin rằng sẽ giải thích lý do chính cho việc sử dụng thiết kế DTO của, giải thích bằng Martin Fowler
Kết luận: DTO của không phải là một chống mẫu. DTO có nghĩa là để được sử dụng chỉ khi bạn cần phải vượt qua dữ liệu từ một hệ thống con khác và họ không có một cách mặc định hoặc standar để giao tiếp.
Nguồn
2012-06-28 06:02:10
Có trong kịch bản như vậy, tôi hiểu việc sử dụng của DTO. Bạn đang gửi kết quả trong một DTO. Nhưng đối với việc sử dụng ứng dụng nội bộ, DTO không có nhiều quyền sử dụng? – Thihara
@Thihara trả lời chỉnh sửa dựa trên nhận xét của bạn –
Theo đầu tiên của bạn như nó là một mô hình chống được sử dụng để có được xung quanh thực tế là thực thể đậu không được serializable. Với ORM, vấn đề chính không tồn tại. – Thihara