2009-03-24 14 views
43

मैंने वास्तव में कोई उदाहरण नहीं देखा है, लेकिन मुझे लगता है कि वे डेटाबेस के भीतर युक्त इकाई तालिका के अंदर सहेजे गए हैं।डेटाबेस में संग्रहीत मूल्य ऑब्जेक्ट्स कैसे हैं?

आईई। अगर मेरे पास एक व्यक्ति इकाई/कुल रूट और संबंधित व्यक्ति तालिका है, यदि उसके पास पता नामक मूल्य वस्तु है, तो पता मूल्य इस व्यक्ति तालिका के अंदर सहेजा जाएगा!

क्या यह उस डोमेन के लिए समझ में आता है जहां मेरे पास अन्य संस्थाएं जैसे कि कंपनियां आदि हैं जिनके पास पता है?

(मैं वर्तमान में एक परियोजना प्रबंधन अनुप्रयोग लिख रहा हूँ और DDD में प्राप्त करने की कोशिश)

उत्तर

84

यह बहुत कारणों से आप का वर्णन किया है के लिए, एक अलग तालिका में मूल्य वस्तुओं स्टोर करने के लिए ठीक है। हालांकि, मुझे लगता है कि आप एंटिटी बनाम वीओएस को गलत समझ रहे हैं - यह एक दृढ़ता से संबंधित चिंता नहीं है।

यहाँ एक उदाहरण है:

मान लें एक कंपनी और व्यक्ति दोनों एक ही मेल पता है। इनमें से कौन सा कथन मान्य मानता है?

  1. "अगर मैं Company.Address संशोधित करने, यह Person.Address को प्रभावित नहीं करना चाहिए"
"अगर मैं Company.Address संशोधित करने, मैं Person.Address स्वचालित रूप से उन परिवर्तनों को प्राप्त करना चाहते हैं"

तो सच है, पता एक इकाई होना चाहिए, और इसलिए यह ओ है है wn तालिका

, तो सच है पता एक मूल्य वस्तु होना चाहिए। इसे मूल इकाई की तालिका के भीतर एक घटक के रूप में संग्रहीत किया जा सकता है, या इसकी अपनी तालिका (बेहतर डेटाबेस सामान्यीकरण) हो सकती है।

जैसा कि आप देख सकते हैं, पता कैसे जारी है, एंटिटी/वीओ अर्थशास्त्र के साथ कुछ लेना देना नहीं है।

7

अधिकांश डेवलपर किसी अन्य चीज़ से पहले डेटाबेस में सोचते हैं। डीडीडी इस बारे में नहीं जानता कि दृढ़ता कैसे संभाली जाती है। इससे निपटने के लिए भंडार पर निर्भर है। आप इसे एक एक्सएमएल, एसक्यूएल, टेक्स्ट फाइल इत्यादि के रूप में जारी रख सकते हैं। संस्थाएं/समेकन/मूल्य वस्तुएं डोमेन से संबंधित अवधारणाएं हैं।

विजय पटेल द्वारा स्पष्टीकरण सही है।

2

मैंने एरिक इवांस पुस्तक और उत्कृष्ट dddsample कार्गो प्रोजेक्ट के साथ डीडीडी सीखना शुरू कर दिया है। http://dddsample.sourceforge.net/

उन (मेरे जैसे) जो डोमेन मॉडल परत में इस अति सूक्ष्म अंतर के कोड कार्यान्वयन में अंतर अमल में लाना चाहता है के लिए

तो, मैं कहूंगा कि:

overidded विधि के बराबर है या/और sameIdentityAs/SameValueAs (इंटरफ़ेस इकाई और ValueObject से), मुझे लगता है, उनकी अभिव्यक्ति की जगह।

यह सिर्फ मेरी फ़ीलिंग :)

मैं दिलचस्प लगता है भी इस पढ़ने के लिए है:

http://martinfowler.com/bliki/ValueObject.html

संबंधित मुद्दे