डेटामैपर अधिक आधुनिक या नया नहीं है, लेकिन ओआरएम के लिए बस अधिक उपयुक्त है।
लोगों का मुख्य कारण बदलता है क्योंकि ActiveRecorddoes not make for a good ORM। एक एआर डेटाबेस तालिका में एक पंक्ति लपेटता है या देखता है, डेटाबेस पहुंच को समाहित करता है, और उस डेटा पर डोमेन तर्क जोड़ता है। तो परिभाषा के अनुसार, एक एआर डेटाबेस रिकॉर्ड का 1: 1 प्रतिनिधित्व है, जो इसे सरल सीआरयूडी के लिए विशेष रूप से उपयुक्त बनाता है।
कुछ लोगों ने अपने एआर को संबंधित डेटा लाने का जोड़ा, जिससे लोगों को विश्वास था कि एआर एक ओआरएम है। यह नहीं। ओआरएम का बिंदु object relational impedance mismatch से अपने डेटाबेस संरचना और आपके डोमेन ऑब्जेक्ट्स से निपटना है। एआर का उपयोग करते समय, आपके पास इस प्रतिबाधा मेल नहीं है क्योंकि आपका एआर डेटाबेस पंक्ति का प्रतिनिधित्व करता है और उचित ओओ डिज़ाइन नहीं। आप अपने ऑब्जेक्ट्स पर अपने डीबी लेआउट को बांध रहे हैं। ऑब्जेक्ट-रिलेशनल व्यवहार पैटर्न में से कुछ अभी भी लागू किए जा सकते हैं (उदाहरण के लिए आलसी लोडिंग)।
एआर की अक्सर आलोचना करने का एक अन्य कारण यह है क्योंकि यह दो चिंताओं को जोड़ता है: व्यवसाय तर्क और डीबी एक्सेस तर्क। इससे अवांछित युग्मन होता है और इसके परिणामस्वरूप बड़े अनुप्रयोगों में कम रखरखाव और लचीलापन हो सकता है। दो परतों के बीच कोई अलगाव नहीं है। युग्मन हमेशा कम लचीलापन की ओर जाता है।
दूसरी तरफ वस्तुओं और डेटाबेस के बीच डेटा को एक दूसरे से और मैपर से स्वतंत्र रखने के दौरान डेटा ले जाता है। जबकि कार्यान्वित करना अधिक कठिन है, यह आपके आवेदन में अधिक लचीला डिज़ाइन की अनुमति देता है। आपके डोमेन ऑब्जेक्ट्स को अब डीबी संरचना से मेल नहीं करना पड़ेगा। डीएएल और डोमेन परत decoupled हैं।
एआर और डेटामैपर भाषा अज्ञेयवादी डिजाइन पैटर्न हैं। आप आरओआर दुनिया में ठोस कार्यान्वयन के प्रति प्रतिक्रिया दे रहे हैं, जो कि ओपी ने नहीं पूछा था। – Gordon
जब मैंने इसका उत्तर दिया, तो सवाल बदल गया है :( – phaedryx
प्रश्न कभी नहीं बदला गया। केवल टैग संपादित किए गए थे। – jblue