यदि आप "पेशेवरों" को प्रेरित करने के लिए थे कि आप ORM को प्रबंधन / ग्राहक के लिए क्यों उपयोग करेंगे, तो इसके क्या कारण होंगे?
कोशिश करें और प्रति उत्तर एक कारण रखें ताकि हम देख सकें कि सबसे अच्छे कारणों के रूप में मतदान क्या होता है
यदि आप "पेशेवरों" को प्रेरित करने के लिए थे कि आप ORM को प्रबंधन / ग्राहक के लिए क्यों उपयोग करेंगे, तो इसके क्या कारण होंगे?
कोशिश करें और प्रति उत्तर एक कारण रखें ताकि हम देख सकें कि सबसे अच्छे कारणों के रूप में मतदान क्या होता है
जवाबों:
डेटा एक्सेस को अधिक अमूर्त और पोर्टेबल बनाना। ओआरएम कार्यान्वयन कक्षाएं विक्रेता-विशिष्ट एसक्यूएल लिखना जानती हैं, इसलिए आपके पास नहीं है।
ORM का उपयोग करने का सबसे महत्वपूर्ण कारण यह है कि आपके पास एक समृद्ध, ऑब्जेक्ट ओरिएंटेड बिजनेस मॉडल हो सकता है और फिर भी इसे स्टोर करने में सक्षम हो सकता है और एक रिलेशनल डेटाबेस के खिलाफ जल्दी से प्रभावी क्वेरी लिख सकता है। मेरे दृष्टिकोण से, मुझे कोई वास्तविक लाभ नहीं दिखता है जो एक अच्छा ओआरएम आपको देता है जब आप उन्नत प्रकार के प्रश्नों की तुलना में अन्य उत्पन्न डीएएल के साथ तुलना कर सकते हैं।
मैं जिस प्रकार की क्वेरी के बारे में सोच रहा हूं वह एक बहुरूपिक क्वेरी है। एक साधारण ORM क्वेरी आपके डेटाबेस में सभी आकृतियों का चयन कर सकती है। आपको आकृतियों का संग्रह वापस मिल जाता है। लेकिन प्रत्येक उदाहरण अपने विभेदक के अनुसार एक वर्ग, वृत्त या आयत है।
एक अन्य प्रकार की क्वेरी एक ऐसी होगी जो किसी ऑब्जेक्ट को और एक डेटाबेस डेटाबेस कॉल में एक या एक से अधिक संबंधित ऑब्जेक्ट या संग्रह प्राप्त करती है। उदाहरण के लिए प्रत्येक आकार की वस्तु को उसके शीर्ष और साइड कलेक्शन के साथ लौटा दिया जाता है।
मुझे यहाँ कई अन्य लोगों से असहमत होने का खेद है, लेकिन मुझे नहीं लगता कि ORM के साथ जाने के लिए कोड पीढ़ी अपने आप में एक अच्छा पर्याप्त कारण है। आप कोड जनरेटर के लिए कई अच्छे डीएएल टेम्प्लेट लिख या पा सकते हैं जिनमें वैचारिक या प्रदर्शन ओवरहेड नहीं है जो ओआरएम करते हैं।
या, यदि आपको लगता है कि आपको यह जानने की आवश्यकता नहीं है कि ORM का उपयोग करने के लिए अच्छा SQL कैसे लिखना है, तो, मैं असहमत हूं। यह सच हो सकता है कि एकल प्रश्नों को लिखने के दृष्टिकोण से, ORM पर भरोसा करना आसान है। लेकिन, ORM के साथ खराब प्रदर्शन वाली दिनचर्या बनाना बहुत आसान है, जब डेवलपर्स यह नहीं समझ पाते हैं कि उनके प्रश्न ORM और SQL के साथ कैसे काम करते हैं।
एक डेटा लेयर होना जो कई डेटाबेस के खिलाफ काम करता है, एक फायदा हो सकता है। यह एक ऐसा नहीं है जिस पर मुझे अक्सर भरोसा करना पड़ा है।
अंत में, मुझे यह दोहराना है कि मेरे अनुभव में, यदि आप अपने ORM की अधिक उन्नत क्वेरी सुविधाओं का उपयोग नहीं कर रहे हैं, तो अन्य विकल्प हैं जो कम सीखने और कम सीपीयू चक्रों के साथ शेष समस्याओं को हल करते हैं।
अरे हाँ, कुछ डेवलपर्स ORM के साथ काम करने को मज़ेदार मानते हैं, इसलिए ORM की आपके-डेवलपर्स-खुश रहने के नज़रिए से भी अच्छे हैं। =)
विकास को गति देना। उदाहरण के लिए, ऑब्जेक्ट और सदस्यों के विपरीत क्वेरी मैपिंग फ़ील्ड जैसे पुनरावृत्ति कोड को समाप्त करना।
आपके डेटा एक्सेस लेयर में व्यावसायिक नियमों के OO एनकैप्सुलेशन का समर्थन करना। आप अपनी एप्लिकेशन भाषा में व्यावसायिक नियमों को (और डिबग) क्लॉन्की ट्रिगर और संग्रहीत प्रक्रिया भाषाओं के बजाय प्राथमिकता के साथ लिख सकते हैं।
बुनियादी CRUD संचालन के लिए बॉयलरप्लेट कोड बनाना। कुछ ORM फ्रेमवर्क सीधे डेटाबेस मेटाडेटा का निरीक्षण कर सकते हैं, मेटाडेटा मैपिंग फ़ाइलें पढ़ सकते हैं, या घोषणात्मक वर्ग गुणों का उपयोग कर सकते हैं।
आप अलग डेटाबेस सॉफ़्टवेयर में आसानी से जा सकते हैं क्योंकि आप एक अमूर्त के लिए विकसित कर रहे हैं।
विकास खुशी, आईएमओ। ORM एब्सट्रैक्ट बहुत सारे नंगे-धातु के सामान जो आपको SQL में करना है। यह आपके कोड आधार को सरल रखता है: प्रबंधन और स्कीमा परिवर्तन के लिए कम स्रोत फ़ाइलों को घंटों के रखरखाव की आवश्यकता नहीं होती है।
मैं वर्तमान में ORM का उपयोग कर रहा हूं और इसने मेरे विकास को गति दी है।
सरल एसक्यूएल प्रश्नों के दोहराव को कम करने के लिए।
इसका कारण जो मैं देख रहा हूं, वह वीएस 200 के डीएएल टूल्स (स्कीमा मैपिंग, टेबल एडेप्टर) से उत्पन्न कोड से बचने के लिए है।
DAL / BLL मैं एक साल पहले बनाया गया था, ठीक काम कर रहा था (इसके लिए मैंने इसे बनाया था) जब तक कि किसी और ने इसका उपयोग कुछ उत्पन्न कार्यों का लाभ उठाने के लिए शुरू नहीं किया (जो मुझे पता नहीं था)
ऐसा लगता है कि यह http://wwww.asp.net से DAL / BLL समाधान की तुलना में बहुत अधिक सहज और क्लीनर समाधान प्रदान करेगा
मैं अपने खुद के SQL कमांड C # DAL कोड जनरेटर के बारे में सोच रहा था, लेकिन ORM अधिक सुरुचिपूर्ण समाधान की तरह दिखता है
प्रश्नों का संकलन और परीक्षण।
ओआरएम में सुधार के लिए टूलिंग के रूप में, संकलन समय त्रुटियों और परीक्षणों के माध्यम से अपने प्रश्नों की शुद्धता को तेजी से निर्धारित करना आसान है।
आपके प्रश्नों को संकलित करने से डेवलपर्स को तेज़ी से त्रुटियों को खोजने में मदद मिलती है। सही? सही। यह संकलन संभव है क्योंकि डेवलपर्स अब एसक्यूएल या एसक्यूएल के कथनों के बजाय अपने व्यापारिक वस्तुओं या मॉडल का उपयोग करके कोड में प्रश्न लिख रहे हैं।
यदि .NET में सही डेटा एक्सेस पैटर्न का उपयोग किया जाता है, तो मेमोरी कलेक्शंस के विरुद्ध अपने क्वेरी लॉजिक को यूनिट करना आसान होता है। यह आपके परीक्षणों के निष्पादन को गति देता है क्योंकि आपको डेटाबेस तक पहुंचने की आवश्यकता नहीं है, डेटाबेस में डेटा सेट करें या यहां तक कि एक पूर्ण डेटा संदर्भ को स्पिन करें। [संपादित करें] यह उतना सच नहीं है जितना मैंने सोचा था कि यह इकाई के रूप में था। स्मृति में परीक्षण कठिन चुनौतियों को दूर कर सकता है। लेकिन मुझे अभी भी पिछले वर्षों की तुलना में इन एकीकरण परीक्षणों को लिखना आसान लगता है। [/ EDIT]
यह निश्चित रूप से कुछ साल पहले की तुलना में आज अधिक प्रासंगिक है जब सवाल पूछा गया था, लेकिन यह केवल विजुअल स्टूडियो और एंटिटी फ्रेमवर्क के लिए मामला हो सकता है जहां मेरा अनुभव निहित है। यदि संभव हो तो अपने स्वयं के वातावरण को प्लग इन करें।
मुझे लगता है कि यहां बहुत सारे अच्छे बिंदु हैं (पोर्टेबिलिटी, विकास में आसानी / रखरखाव, ओओ बिजनेस मॉडलिंग आदि पर ध्यान देना), लेकिन जब अपने ग्राहक या प्रबंधन को समझाने की कोशिश करते हैं, तो यह सब उबलता है कि आप कितने पैसे बचाएंगे एक ORM ।
विशिष्ट कार्यों के लिए कुछ अनुमान (या यहां तक कि बड़ी परियोजनाएं जो आ रही हैं) कर सकते हैं और आपको (उम्मीद!) स्विच करने के लिए कुछ तर्क मिलते हैं जिन्हें अनदेखा करना मुश्किल है।
कोड स्मिट टेम्प्लेट का उपयोग करते हुए .net टीयर
http://nettiers.com/default.aspx?AspxAutoDetectCookieSupport=1
क्यों कोड है कि कुछ भी उत्पन्न किया जा सकता है।
मुझे लगता है कि एक आम बात यह है कि ORM को आपके POJO में कुछ अपडेशन की आवश्यकता होगी। मुख्य रूप से स्कीमा, संबंध और क्वेरी से संबंधित है। ऐसा परिदृश्य जहां आप मॉडल ऑब्जेक्ट में परिवर्तन करने के लिए नहीं मान रहे हैं, हो सकता है क्योंकि यह प्रोजेक्ट या b / w क्लाइंट और सर्वर पर अधिक साझा किया गया हो। तो ऐसे मामलों में आपको इसे दो स्तरों में विभाजित करने की आवश्यकता होगी, जिसके लिए अतिरिक्त प्रयासों की आवश्यकता होगी।
मैं एक Android डेवलपर हूं और जैसा कि आप जानते हैं कि मोबाइल एप्लिकेशन आमतौर पर आकार में विशाल नहीं होते हैं, इसलिए शुद्ध-मॉडल और ऑरम-प्रभावित-मॉडल को अलग करने का यह अतिरिक्त प्रयास पूर्ण नहीं लगता है।
मैं समझता हूं कि प्रश्न सामान्य है। लेकिन मोबाइल ऐप्स जेनेरिक छतरी के अंदर भी आते हैं।