परिचय
ऑब्जेक्ट-रिलेशनल मैपिंग (ओआरएम) एक तकनीक है जो आपको ऑब्जेक्ट-ओरिएंटेड प्रतिमान का उपयोग करके डेटाबेस से डेटा को क्वेरी और हेरफेर करने की सुविधा देता है। जब ओआरएम के बारे में बात की जाती है, तो अधिकांश लोग एक पुस्तकालय का उल्लेख कर रहे हैं जो ऑब्जेक्ट-रिलेशनल मैपिंग तकनीक को लागू करता है, इसलिए "ओआरएम" वाक्यांश।
एक ORM लाइब्रेरी आपकी पसंद की भाषा में लिखी गई एक पूरी तरह से साधारण लाइब्रेरी है जो डेटा में हेरफेर करने के लिए आवश्यक कोड को एनकैप्सुलेट करती है, इसलिए आप SQL का उपयोग नहीं करते हैं; आप जिस वस्तु का उपयोग कर रहे हैं, उसी भाषा में किसी वस्तु के साथ सीधे इंटरैक्ट करते हैं।
उदाहरण के लिए, यहाँ एक छद्म भाषा के साथ पूरी तरह से काल्पनिक मामला है:
आपके पास एक पुस्तक वर्ग है, आप उन सभी पुस्तकों को पुनः प्राप्त करना चाहते हैं जिनमें से लेखक "लिनुस" है। मैन्युअल रूप से, आप ऐसा कुछ करेंगे:
book_list = new List();
sql = "SELECT book FROM library WHERE author = 'Linus'";
data = query(sql); // I over simplify ...
while (row = data.next())
{
book = new Book();
book.setAuthor(row.get('author');
book_list.add(book);
}
ORM लाइब्रेरी के साथ, यह इस तरह दिखेगा:
book_list = BookTable.query(author="Linus");
ओआरएम पुस्तकालय के माध्यम से यांत्रिक भाग का स्वचालित रूप से ध्यान रखा जाता है।
फायदा और नुकसान
ORM के उपयोग से बहुत समय बचता है क्योंकि:
- DRY : आप अपने डेटा मॉडल को केवल एक ही स्थान पर लिखते हैं, और कोड को अपडेट, रखरखाव और पुन: उपयोग करना आसान है।
- बहुत सारा सामान अपने आप हो जाता है, डेटाबेस हैंडलिंग से लेकर I18N तक ।
- यह आपको MVC कोड लिखने के लिए मजबूर करता है , जो अंत में, आपके कोड को थोड़ा क्लीनर बनाता है।
- आपको खराब-गठित SQL लिखना नहीं है (अधिकांश वेब प्रोग्रामर वास्तव में इसे चूसते हैं, क्योंकि SQL को "उप" भाषा की तरह माना जाता है, जब वास्तव में यह बहुत शक्तिशाली और जटिल होता है)।
- साफ करना; तैयार किए गए बयानों या लेनदेन का उपयोग करना एक विधि को कॉल करने जितना आसान है।
ORM लाइब्रेरी का उपयोग अधिक लचीला है क्योंकि:
- यह आपके प्राकृतिक तरीके से कोडिंग में फिट बैठता है (यह आपकी भाषा है!)।
- यह DB सिस्टम को अमूर्त करता है, इसलिए आप जब चाहें इसे बदल सकते हैं।
- मॉडल कमजोर रूप से बाकी एप्लिकेशन के लिए बाध्य है, इसलिए आप इसे बदल सकते हैं या कहीं और उपयोग कर सकते हैं।
- यह आपको सिरदर्द के बिना डेटा वंशानुक्रम जैसे OOP अच्छाई का उपयोग करने देता है।
लेकिन ORM दर्द हो सकता है:
- आपको इसे सीखना होगा, और ओआरएम पुस्तकालय हल्के उपकरण नहीं हैं;
- आपको इसे सेट करना होगा। एक ही समस्या है।
- सामान्य प्रश्नों के लिए प्रदर्शन ठीक है, लेकिन बड़ी परियोजनाओं के लिए एक SQL मास्टर हमेशा अपनी SQL के साथ बेहतर करेगा।
- यह डीबी को अमूर्त करता है। हालांकि यह ठीक है कि अगर आपको पता है कि दृश्य के पीछे क्या हो रहा है, तो यह नए प्रोग्रामर के लिए एक जाल है जो बहुत लालची बयान लिख सकता है, जैसे कि एक
for
लूप में भारी हिट ।
ORM के बारे में कैसे जानें?
खैर, एक का उपयोग करें। आप जो भी ORM लाइब्रेरी चुनते हैं, वे सभी समान सिद्धांतों का उपयोग करते हैं। यहाँ बहुत सारे ORM पुस्तकालय हैं:
यदि आप वेब प्रोग्रामिंग में ORM लाइब्रेरी को आज़माना चाहते हैं, तो आप एक संपूर्ण फ्रेमवर्क स्टैक का उपयोग करके बेहतर होंगे:
- सिम्फनी (PHP, प्रोपेल या डॉक्ट्रिन का उपयोग करके)।
- Django (पायथन, एक आंतरिक ORM का उपयोग करके)।
जब तक आप कुछ सीखने की कोशिश नहीं कर रहे हैं, तब तक अपना खुद का ओआरएम लिखने की कोशिश न करें। यह काम का एक बड़ा टुकड़ा है, और पुराने लोगों ने विश्वसनीय बनने से पहले बहुत समय और काम किया।