2010-07-07 7 views
13

कर सकते हैं आप, कृपया, मेरा पीछा डेटाबेस प्रतिनिधियों के बीच अन्तर को स्पष्ट, कहते हैं, पीएचपी में .:ORM/DAO/DataMapper/ActiveRecord/TableGateway अंतर?

ORM डीएओ DataMapper ActiveRecord TableGateway

किसी भी उदाहरण सराहना की जाएगी।

उत्तर

17

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

Object Relational Mapper

वस्तु संबंधपरक मानचित्रण (ORM हे/आरएम, और हे/आर मानचित्रण) कम्प्यूटर सॉफ्टवेयर में रिलेशनल डेटाबेस और वस्तु में असंगत प्रकार प्रणालियों के बीच डेटा परिवर्तित करने के लिए एक प्रोग्रामिंग तकनीक है उन्मुख प्रोग्रामिंग भाषाएं।

Data Access Object

उपयोग एक डेटा एक्सेस ऑब्जेक्ट सार करने के लिए (डीएओ) और डेटा स्रोत के इस्तेमाल के सभी संपुटित। डीएओ डेटा प्राप्त करने और स्टोर करने के लिए डेटा स्रोत के साथ कनेक्शन का प्रबंधन करता है।

DataMapper

मानचित्रकारों (473) की एक परत है कि वस्तुओं और एक डेटाबेस है, जबकि उन्हें एक दूसरे और नक्शाकार खुद के स्वतंत्र रखने के बीच डेटा ले जाता है।

Active Record

एक वस्तु है कि एक डेटाबेस तालिका या दृश्य में एक पंक्ति लपेटता, डेटाबेस का उपयोग समाहित, और उस डेटा पर डोमेन तर्क कहते हैं।

Table Data Gateway

एक वस्तु है कि एक डेटाबेस तालिका करने के लिए एक गेटवे (466) के रूप में कार्य करता है। एक उदाहरण तालिका में सभी पंक्तियों को संभालता है।

+0

मुझे लगता है कि टेबल डेटा गेटवे और डेटामैपर काफी हद तक समान पैटर्न हैं। वे दोनों डोमेन ऑब्जेक्ट्स को प्रश्नों से अलग रखते हैं, और दोनों को किसी ऑब्जेक्ट के डेटा को डेटाबेस में मैप करने का तरीका चाहिए। एकमात्र अंतर जो मैं देखता हूं वह यह है कि टेबल डेटा गेटवे के लिए आपको प्रत्येक फ़ील्ड को स्पष्ट रूप से इंजेक्ट करने की आवश्यकता होती है, जबकि डेटामैपर किसी ऑब्जेक्ट को स्वीकार कर सकता है और मैपिंग को स्वयं ही संभाल सकता है। क्या वो सही है? – AgmLauncher

+0

@AgmLauncher No. TableDataGateways पंक्तियों को संभालता है, डोमेन ऑब्जेक्ट्स नहीं।यही है, TableDataGateways डेटाबेस में रिकॉर्ड का 1: 1 प्रतिनिधित्व देता है। यह तभी होता है जब आप इन्हें स्वतंत्र रूप से संरचित डोमेन ऑब्जेक्ट में मैप करना शुरू करते हैं जिसे आपको डेटामैपर मिलता है। – Gordon

+0

मैं देखता हूं, इसलिए वे पारस्परिक रूप से अनन्य पैटर्न नहीं हैं, टीडीजी एक डीएम की तुलना में स्तर में थोड़ा कम प्रतीत होता है, और यदि कोई वांछित हो तो डीएम एक (या कई?) टीडीजी का उपयोग कर सकता है। क्या वो सही है? – AgmLauncher