2010-02-14 10 views
9

मैं पिछले 2 सप्ताह से डीडीडी का अध्ययन कर रहा हूं, और वास्तव में मेरे सामने फंसे चीजों में से एक यह था कि कुल जड़ों में अन्य कुल जड़ें कैसे हो सकती हैं। कुल जड़ों को भंडार से पुनर्प्राप्त किया जाता है, लेकिन यदि रूट में एक और रूट है, तो क्या भंडार में अन्य भंडार का संदर्भ होता है और इसे सबूत बनाने के लिए कहा जाता है?डीडीडी: अन्य योगों के लिए कुल जड़ों को प्राप्त करना

+0

क्या यह डोमेन-संचालित डिज़ाइन है? क्या आपने समग्र डिजाइन पैटर्न को देखा? – philant

उत्तर

0

मेरी राय से यह निर्भर करता है - मेरे पास एक ही परिदृश्य है और जिस तरह से मैं इसका निपटारा करता हूं वह ओआरएम के माध्यम से है जिसका उपयोग मैं कर रहा हूं - nHibernate।

मेरे पास मेरी सभी इकाइयों के लिए मैपिंग है जिनमें से कई समग्र जड़ों हैं और उनमें से एक सदस्य चर के रूप में कई अन्य समग्र जड़ें हैं। इस समग्र समग्र रूट के लिए भंडार को अन्य कुल रूट रिपॉजिटरीज़ के संदर्भों की आवश्यकता नहीं है क्योंकि nHibernate जानता है कि सभी आवश्यक डेटा कैसे प्राप्त करें (मैपिंग के माध्यम से)।

HTH

आंगनवाडी

1

भंडार का निर्माण नहीं करता है, लेकिन यह भंडार। जब आप डीडीडी का उपयोग करते हैं, तो आप बुनियादी दृढ़ता पैटर्न जैसे काम की इकाई, पहचान मानचित्र, आलसी लोड, ऑब्जेक्ट रिलेशन मैपर, क्वेरी ऑब्जेक्ट, (गतिशील) प्रॉक्सी से परिचित होना चाहते हैं। (इन पैटर्नों में डीडीडी के साथ कुछ लेना देना नहीं है, लेकिन जानना बहुत उपयोगी है)। भंडार एक डोमेन संचालित तरीके से पहले और अमूर्त डेटाकैस से पहले वर्णित पैटर्न के कार्यान्वयन को छिपाने के लिए सिर्फ एक मुखौटा है। अधिकांश लोग मैन्युअल रूप से मैन्युअल रूप से अपने दृढ़ता आधारभूत संरचना को मैन्युअल रूप से नहीं लिखते हैं, खासकर जब डीडीडी का उपयोग करते हैं, तो आप एक ओआरएम देखना चाहेंगे।

किसी ऑब्जेक्ट में डेटाबेस रिकॉर्ड्स को परिवर्तित करने वाले कोड के साथ वास्तविक संदर्भ डेटामैपर में होगा। मैपिंग क्लास में मैपिंगक्लास के बीच संदर्भ होंगे, या मैपरफैक्टरी जैसे कुछ द्वारा बनाए गए हैं।

public interface IDataMapper<T> 
{ 
    T Map(IDataReader reader); 
} 

आप इस कोड अपने आप को लागू करने के लिए, बस एक उपकरण है कि यह आप के लिए करता है का उपयोग करें और समझने के लिए उपकरण में कोड के कुछ हिस्सों (ORM) काम करता है की कोशिश नहीं है। किसी भी ओआरएम के बिना शुद्ध ddd उपकरण के एक अच्छे सेट के बिना लगभग असंभव है जो आपको बहुत सारे कोड लिखने से बचाता है।

2

@Paco: आप गलत हैं। रिपोजिटरीज न केवल वस्तुओं को संग्रहित करने के लिए हैं। यदि आपने एरिक इवान की डीडीडी पुस्तक पढ़ ली है, तो आप जान लेंगे कि रिपोजिटरीज डेटा के ऑब्जेक्ट उन्मुख इन-मेमोरी प्रस्तुति की तरह हैं। आप एक रिपोजिटरी ऑब्जेक्ट का उपयोग उसी तरह कर सकते हैं जैसे आप संग्रह का उपयोग करते हैं। आप वस्तुओं को प्राप्त करने या सेट करने के लिए इंडेक्सर का उपयोग कर सकते हैं, आप एक नई ऑब्जेक्ट जोड़ने के लिए Add() विधि का उपयोग कर सकते हैं, आप ऑब्जेक्ट को निकालने के लिए निकालें() विधि का उपयोग कर सकते हैं।

रिपोजिटरी फिर बुनियादी ढांचे का उपयोग करता है डेटाबेस से डेटा को पढ़ें/लिखें। यह आपके संबंधपरक डेटाबेस से डेटा की पुनर्प्राप्ति को सरल बनाने और अपनी संस्थाओं पर मैपिंग के लिए डेटामैपर का उपयोग कर सकता है।

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