जहां तक डीडीडी की मेरी समझ मान जाती है वैल्यू ऑब्जेक्ट्स आपकी संस्थाओं को विभाजित करने का एक तरीका है। यदि किसी मान ऑब्जेक्ट को डेटाबेस में किसी आईडी के साथ संग्रहीत किया जाना चाहिए तो यह एक मान ऑब्जेक्ट नहीं है।
उदाहरण:
डोमेन मॉडल की तरह इस (सी #) दिखता है:
public class Customer : Entity
{
public Guid CustomerID { get; }
public string LastName { get; set; }
public Address HomeAddress { get; set; }
}
public class Address : ValueObject
{
public string Street { get; set; }
public string City { get; set; }
public string ZipCode { get; set; }
}
इसी डेटाबेस तालिका इस (छद्म एसक्यूएल) कुछ ऐसा दिखाई देगा:
CREATE TABLE Customers
(
CustomerID,
LastName,
HomeAddress_Street,
HomeAddress_City,
HomeAddress_ZipCode,
)
पते को एक अलग तालिका में स्टोर करने के लिए आप इसे एक इकाई बना देंगे जिसमें एक आईडी है।
लेकिन फिर डोमेन मॉडल डेटाबेस का केवल 1: 1 है, पता अभी भी एक मूल्य वस्तु हो सकता है और अभी भी एक अलग तालिका है। – TWith2Sugars
नहीं, यह डेटाबेस का 1: 1 नहीं है। आपके पास एक ग्राहक वर्ग और एक एड्रेस क्लास है (जो मूल्य वस्तु है)। NHibernate में, एक मान वस्तु को घटक के रूप में मैप किया जाता है। जैसे ही आपके पास एक ऐसी इकाई है जिसके लिए आईडी की आवश्यकता है, यह अब एक मूल्य वस्तु नहीं है। –
लेकिन यदि आपको किसी तालिका में पता सहेजने की आवश्यकता है तो उसे डेटाबेस द्वारा आईडी की आवश्यकता होगी। सिर्फ इसलिए कि डेटाबेस को एक आईडी की आवश्यकता होती है इसका मतलब यह नहीं है कि ऑब्जेक्ट तुरंत एक इकाई है। – TWith2Sugars