2012-11-25 15 views
22

मुझे दो पैटर्न मिले जो एक ही लक्ष्य के रूप में दिखाई देते हैं - क्या अंतर है?डेटा मैपर पैटर्न रिपोजिटरी पैटर्न से अलग कैसे है?

http://martinfowler.com/eaaCatalog/dataMapper.html

http://martinfowler.com/eaaCatalog/repository.html

+1

यदि आपका डेटा मैपर बहुत बड़ा है या वास्तव में वस्तुओं को मैप करने की तुलना में बड़ी मात्रा में पूछताछ करता है, तो आप अकेले पूछताछ भाग पर ध्यान केंद्रित करने के लिए एक और कक्षा पेश करते हैं, जिसे आप इसे एक भंडार पैटर्न के रूप में नामित करते हैं। – Rockstart

उत्तर

37

मानचित्रण परत जहाँ क्वेरी निर्माण कोड ध्यान केंद्रित किया है से अधिक अमूर्त की एक और परत [भंडार है]।

DataMapper बाड़ के डीबी पक्ष सुनिश्चित करता है अपने व्यापार तर्क की बारीकियों और के बारे में पता करने के लिए की जरूरत नहीं है कैसे डेटा अपने व्यापार वस्तुओं के द्वारा स्मृति में रखा जाता है और बाड़ के अपने व्यापार की ओर नहीं है यह जानने की जरूरत है कि डेटा कैसे संग्रहीत किया जाता है।

उदाहरण के लिए, मान लें कि आपका डेटा पंक्तियों के सेट के रूप में डीबी में रखा गया है, कहें कि प्रत्येक पंक्ति आपके स्टोर में किसी आइटम का प्रतिनिधित्व करती है। इन-मेमोरी साइड पर, आप उस जानकारी को StoreItem की सूची के रूप में नहीं रखना चाहेंगे, लेकिन दो सूचियों के रूप में, स्टॉक में मौजूद वस्तुओं के लिए एक और दूसरे स्टॉक के बाहर। यह एक सूची और दो सूचियों के बीच संक्रमण को संभालने के लिए DataMapper का काम होगा।

आप बाड़ के व्यावसायिक पक्ष पर अन्य वस्तुओं और विरासत की सूचियां जोड़कर चीजों को जटिल बना सकते हैं। 'डेटामैपर' को उस प्रस्तुति से संबंधित डीबी में अनुवाद करना होगा।

'रिपोजिटरी' व्यापार पक्ष के लिए "स्थिति से चुनें * स्थिति" कार्यक्षमता प्रदान करता है। आप एक फ़िल्टर प्रदान करते हैं और यह उस फ़िल्टर से मेल खाने वाली वस्तुओं का संग्रह वापस कर देगा।

संक्षेप में: 'डेटामैपर' एकल वस्तुओं से संबंधित है, 'रिपोजिटरी' ऑब्जेक्ट्स के संग्रह से संबंधित है और 'डेटामैपर' द्वारा प्रदान की गई कार्यक्षमता पर विस्तार करता है।

+0

अच्छा स्पष्टीकरण, क्या आप एक उदाहरण दे सकते हैं कि ये कैसे भिन्न हो सकते हैं। जावा, .NET और PHP ढांचे में जो कुछ मैं देखता हूं, उससे दो अवधारणाएं एक दूसरे के लिए उपयोग की जाती हैं और यह बहुत भ्रमित है। –

+1

@LordYggdrasill यदि आपके पास किसी विशेष ढांचे के साथ कोई विशिष्ट समस्या है तो आपको इसे इस साइट पर किसी प्रश्न के रूप में प्रस्तुत करना चाहिए। क्वेरीिंग और मैपिंग तर्कसंगत रूप से अलग-अलग कार्य हैं, लेकिन उनके * कार्यान्वयन * अक्सर कसकर युग्मित होते हैं, जो बता सकते हैं कि क्यों कुछ (उद्धरण वांछित) उन्हें एक साथ विचार करने का विकल्प चुन सकते हैं। – Andrei

+0

वैसे यहां मेरे पास एएसपी.नेट की वेबसाइट से एक उदाहरण है। जैसा कि आप देख सकते हैं, रिपोजिटरी पैटर्न का उनका कार्यान्वयन पीओईएए में मार्टिन फाउलर के डाटा मैपर जैसा बिल्कुल दिखता है। क्या आप जानते हैं कि इस घटना को कैसे समझाया जाए? शायद एएसपी.नेट की भंडार वास्तव में डेटा मैपर है? http://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/implementing-the-repository-and-unit-of-work-patterns- इन-ए-एएसपी-नेट-एमवीसी-एप्लिकेशन –

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