9

Đối tượng chuyển dữ liệu có giống với đối tượng giá trị hoặc chúng khác nhau không? Nếu chúng khác nhau thì chúng ta nên sử dụng DTO ở đâu và chúng ta nên sử dụng VO ở đâu?Là một đối tượng truyền dữ liệu giống như đối tượng giá trị?

Các ngôn ngữ lập trình chúng ta đang nói về là Java và bối cảnh là - có là một ứng dụng web, mà fetches dữ liệu từ một cơ sở dữ liệu và sau đó xử lý nó và cuối cùng là thông tin xử lý được hiển thị trên front-end

+0

Ngôn ngữ lập trình hoặc ngữ cảnh nào khác, câu hỏi của bạn có xuất hiện không? – Marcin

+0

Ngôn ngữ lập trình là Java và ngữ cảnh là - có một ứng dụng web lấy dữ liệu từ cơ sở dữ liệu và sau đó xử lý nó và cuối cùng thông tin được xử lý được hiển thị trên front-end – Gaurav

+0

Sau đó thêm nó vào câu hỏi của bạn và gắn thẻ phù hợp ; – Marcin

Trả lời

8

Một đối tượng giá trị là một đối tượng đơn giản mà bình đẳng không dựa trên nhận dạng. Đối tượng truyền dữ liệu là một đối tượng được sử dụng để chuyển dữ liệu giữa các hệ thống con ứng dụng phần mềm, thường là giữa các lớp nghiệp vụ và giao diện người dùng. Nó chỉ tập trung vào dữ liệu đơn giản, vì vậy nó không có bất kỳ hành vi nào.

+0

Bạn có thể vui lòng giải thích về "sự bình đẳng không dựa trên danh tính ", đưa ra một số ví dụ? – Gaurav

+1

Tôi có thể tưởng tượng rằng câu này có nghĩa là một VO không phải ánh xạ trực tiếp với một thực thể miền, thay vì một số trường của nó hoặc một "bức tranh" khác của nó. Thông thường, VO được hiểu là giống như DTO, nhưng DTO dựa nhiều hơn vào "thành phần trường" (một số trường từ các lớp miền khác nhau). Ví dụ DTO có thể là một bố cục giữa các trường từ lớp CustomerAddress và lớp Customer để phân phối nó cho lớp trình bày. – frandevel

+1

@Gaurav hai đối tượng giá trị bằng nhau khi chúng có cùng giá trị, nhưng không nhất thiết phải là cùng một đối tượng ... – JuanZe

2

sử dụng DTO ở ranh giới dịch vụ của bạn nếu bạn không muốn gửi đối tượng miền thực cho khách hàng của dịch vụ - điều này giúp giảm sự phụ thuộc giữa khách hàng và dịch vụ.

giá trị đối tượng là đối tượng đơn giản mà bình đẳng không dựa trên nhận dạng, ví dụ: java.lang.Integer

Các đối tượng DTO và giá trị không thực sự là lựa chọn thay thế cho nhau.

2

Đối tượng chuyển dữ liệu là một kludge để di chuyển một loạt dữ liệu từ một lớp hoặc tầng khác, mục tiêu là giảm thiểu số lượng cuộc gọi qua lại bằng cách đóng gói một loạt nội dung vào cùng cấu trúc dữ liệu và gửi nó cùng nhau. Một số người cũng sử dụng nó, như Michael points out in his post here, để các lớp được sử dụng bởi một lớp không được tiếp xúc với lớp gọi nó. Khi tôi đề cập đến DTO như một kludge, tôi có nghĩa là không có một khái niệm trừu tượng chính xác được thực hiện, đó là một cách giải quyết thực tế để giúp giao tiếp giữa các lớp ứng dụng.

Đối tượng giá trị là thứ mà chúng tôi chỉ quan tâm đến giá trị của nó, chẳng hạn như monetary amount, phạm vi ngày hoặc mã từ lookup table. Nó không có một bản sắc, có nghĩa là bạn sẽ không quan tâm, nếu bạn có một số người trong số họ, theo dõi trong đó là, bởi vì họ không phải là những thứ trong mình.

Đối tượng giá trị tương phản với những thứ có một danh tính duy nhất trong hệ thống của bạn, được gọi là Thực thể. Nếu bạn có hệ thống theo dõi khách hàng thực hiện thanh toán, khách hàng và thanh toán là các thực thể, vì chúng đại diện cho những thứ cụ thể, nhưng số tiền trên thanh toán chỉ là giá trị, nó không có sự tồn tại, theo như hệ thống của bạn có liên quan. Làm thế nào một cái gì đó liên quan đến hệ thống của bạn xác định nếu nó là một đối tượng giá trị hoặc một thực thể.

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