7

क्या यह एक OR-mapper का उपयोग करने के लिए समझ में आता है?क्या यह एक OR-Mapper का उपयोग करने के लिए समझ में आता है?

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

1.) जहां एसक्यूएल संबंधित है:

मेरे तर्क इस प्रकार है?

ए।) प्रत्येक पेशेवर परियोजना में मैंने काम किया है, डेटा की सुरक्षा एक महत्वपूर्ण आवश्यकता रही है। संग्रहित प्रक्रियाएं पहुंच और लेखा परीक्षा को नियंत्रित करने के लिए एक प्राकृतिक प्रवेश द्वार प्रदान करती हैं।

बी।) उत्पादन में अनुप्रयोगों के साथ मुद्दों को अक्सर नए निर्माण किए बिना टेबल और संग्रहित प्रक्रियाओं के बीच हल किया जा सकता है।

2.) मैं जेनरेट किए गए एसक्यूएल को कैसे नियंत्रित करूं? मैं कुशल एसक्यूएल उत्पन्न करने के लिए पार्स पेड़ पर भरोसा कर रहा हूं। मेरे पास एसक्यूएल-सर्वर और ओरेकल में एसक्यूएल अनुकूलित करने का काफी अनुभव है, लेकिन अगर मुझे इसे फिर से नहीं करना पड़ेगा तो मुझे धोखा नहीं होगा। :)

3.) अगर मैं संग्रहीत प्रक्रियाओं से अपना डेटा प्राप्त कर रहा हूं तो ओआर-मैपर का उपयोग करने का क्या मतलब है?

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

पिछले कई सालों से हम सभी विशिष्ट ओआर-मैपर (एंटीटी-फ्रेमवर्क, एनएचबेर्नेट, आदि ...) के उपयोग की वकालत करने वाले बहुत से सम्मानित डेवलपर्स सुन रहे हैं।

क्या कोई मुझे बता सकता है कि किसी को किसी प्रमुख परियोजना पर मुख्यधारा के विकास के लिए ओआरएम क्यों जाना चाहिए?

संपादित करें: http://www.codinghorror.com/blog/2006/06/object-relational-mapping-is-the-vietnam-of-computer-science.html इस विषय पर एक मजबूत चर्चा प्रतीत होता है लेकिन यह पुराना है।

फिर भी एक और संपादन: हर कोई इस बात से सहमत है कि संग्रहित प्रक्रियाओं का उपयोग उनके प्रदर्शन लाभ और डेटा के नजदीक प्रोग्रामिंग तर्क जोड़ने की उनकी क्षमता के कारण भारी शुल्क उद्यम अनुप्रयोगों के लिए किया जाना चाहिए।

मुझे लगता है कि या मैपर के पक्ष में सबसे मजबूत तर्क डेवलपर उत्पादकता है।

मुझे संदेह है कि ओआरएम आंदोलन के लिए एक बड़ा प्रेरक शेष दृढ़ता-अज्ञेयवादी की ओर डेवलपर वरीयता है (यदि डेटा स्मृति में है [कैशिंग नहीं है] या डेटाबेस पर) परवाह नहीं है।

ओआरएम स्थानीय और छोटे वेब अनुप्रयोगों के लिए उत्कृष्ट समय-बचतकर्ता प्रतीत होता है।

शायद सबसे अच्छी सलाह जो मैं देख रहा हूं क्लाइंट 0 9 से है: ओआरएम सेटअप का उपयोग करने के लिए, लेकिन डेटाबेस गहन सामग्री के लिए संग्रहीत प्रक्रियाओं का उपयोग करें (AKA जब ORM अपर्याप्त प्रतीत होता है)।

+2

सीएसएलए एक ओआर-मैपर नहीं है।यह एक आम धारणा है। –

+1

शायद यह आपके लिए अधिक वर्तमान है। http://stackoverflow.com/questions/404083/is-orm-still-the- वियतनाम-of-computer-cience – dkretz

उत्तर

4

मैं कई वर्षों से प्रो एसपी था और सोचा कि यह डीबी विकास करने का एकमात्र सही तरीका था, लेकिन मैंने पिछले 3-4 परियोजनाओं को पूरा किया है, मैंने ईएफ 4.0 डब्ल्यू/आउट एसपी और सुधार में पूरा किया मेरी उत्पादकता में वास्तव में आश्चर्यजनक रहा है - मैं कोड की कुछ पंक्तियों में चीजें कर सकता हूं जो मुझे एक दिन पहले ले जाता।

मुझे अभी भी लगता है कि कुछ चीजों के लिए एसपी महत्वपूर्ण हैं, (ऐसे समय होते हैं जब आप एक अच्छी तरह से चुने गए एसपी के साथ प्रदर्शन में काफी सुधार कर सकते हैं), लेकिन सामान्य सीआरयूडी संचालन के लिए, मैं कभी भी वापस जाने की कल्पना नहीं कर सकता।

तो मेरे लिए संक्षिप्त जवाब है, डेवलपर उत्पादकता ओआरएम का उपयोग करने का कारण है - एक बार जब आप सीखने की वक्र को प्राप्त कर लेते हैं।

1

संग्रहित प्रक्रियाएं एक स्थान पर डेटाबेस तर्क को समाहित करने के लिए बहुत अच्छी हैं। मैंने एक ऐसी परियोजना पर काम किया है जो केवल ओरेकल संग्रहीत प्रक्रियाओं का उपयोग करता है, और वर्तमान में एक है जो हाइबरनेट का उपयोग करता है। हमने पाया कि अनावश्यक प्रक्रियाओं को विकसित करना बहुत आसान है, क्योंकि हमारे जावा डेवलपर पीएल/एसक्यूएल पैकेज निर्भरताओं में नहीं थे।

प्रोजेक्ट के लिए डीबीए के रूप में मुझे लगता है कि जावा डेवलपर्स जावा कोड में सबकुछ रखना पसंद करते हैं। आप मौलिक में भागते हैं, "मैं सिर्फ उन सभी ऑब्जेक्ट्स के माध्यम से क्यों नहीं लूंगा जो अभी लौट आए हैं?" इसने कई "इंडेक्स का ख्याल क्यों नहीं रखा है?" मुद्दे।

हाइबरनेट के साथ आपकी इकाइयों में न केवल उनके लिंक किए गए डेटाबेस गुण हो सकते हैं, लेकिन उनमें कोई भी कार्रवाई भी हो सकती है।

उदाहरण के लिए, हमारे पास कार्य इकाई है। कोई अन्य चीजों के साथ एक कार्य जोड़ या संशोधित कर सकता है। इसे नामांकित क्वेरीज़ में हाइबरनेट एंटिटी में मॉडलिंग किया जा सकता है।

तो मैं कहूंगा कि एक ओआरएम सेटअप के साथ जाना है, लेकिन डेटाबेस गहन सामग्री के लिए प्रक्रियाओं का उपयोग करें।

जावा में अपना एसक्यूएल रखने का एक नकारात्मक पक्ष यह है कि आप गैर-पैरामीटरयुक्त क्वेरी का उपयोग करके डेवलपर्स का जोखिम चलाते हैं जो आपके ऐप को SQL इंजेक्शन पर खोलते हैं।

+0

इस प्रतिक्रिया में: "अपनी इकाइयों को हाइबरनेट के साथ न केवल उनके लिंक किए गए डेटाबेस गुण हो सकते हैं, लेकिन इसमें भी शामिल हो सकता है उन पर किए गए किसी भी कार्रवाई। " लेकिन मैं इसे ओआरएम के बिना प्राप्त कर सकता हूं। इसके अलावा, एक जिम्मेदारी भी यहां एक हिस्सा खेलना चाहिए। डीटीओ की भूमिका क्या है: डेटा ट्रांसफर करें या मूल्यों के आधार पर गणना करें? – RBZ

3

एक अलग दृष्टिकोण ... अब कोई एसक्यूएल आंदोलन बढ़ाने के साथ, आप अपने डेटा को स्टोर करने के बजाय ऑब्जेक्ट/दस्तावेज़ डेटाबेस को आजमा सकते हैं। इस तरह, आप मूल रूप से नरक से बचेंगे जो या मैपिंग है। डेटा को स्टोर करें क्योंकि आपका एप्लिकेशन उनका उपयोग करता है और आगे के विश्लेषण और रिपोर्टिंग के लिए इसे अधिक रिलेशनल/ओलाप प्रारूप में स्थानांतरित करने के लिए एक कार्यकर्ता प्रक्रिया में दृश्य के पीछे परिवर्तन करता है।

1

निम्नलिखित मेरी निजी राय है, इसलिए यह बल्कि व्यक्तिपरक है।

1.) मुझे लगता है कि किसी को स्थानीय एप्लिकेशन और एंटरप्राइज़ एप्लिकेशन के बीच अंतर करने की आवश्यकता है। स्थानीय और कुछ वेब अनुप्रयोगों के लिए, डीबी तक सीधी पहुंच ठीक है। एंटरप्राइज़ अनुप्रयोगों के लिए, मुझे लगता है कि बेहतर encapsulation और अधिकार प्रबंधन अंत में बेहतर विकल्प संग्रहित प्रक्रियाओं बनाता है।

2.) यह ओआरएम के साथ बड़े मुद्दों में से एक है। वे आमतौर पर विशिष्ट क्वेरी पैटर्न के लिए अनुकूलित होते हैं, और जब तक आप उन जेनरेट एसक्यूएल का उपयोग करते हैं, आमतौर पर अच्छी गुणवत्ता का होता है। हालांकि, जटिल परिचालनों के लिए जो डेटा के करीब कुशल होने के लिए किए जाने की आवश्यकता है, मेरी भावना यह है कि मैन्युअल एसक्यूएल कोड का उपयोग करने का तरीका है, और इस मामले में कोड एसपी में जाता है।

3.) डेटा इकाइयों के रूप में ऑब्जेक्ट्स से निपटना भी "ढीले" डेटासेट (यहां तक ​​कि अगर टाइप किए गए हैं) तक सीधे पहुंच की तुलना में फायदेमंद है। किसी ऑब्जेक्ट ग्राफ़ में सेट किए गए परिणाम को deserializing बहुत उपयोगी है, भले ही परिणाम सेट एसपी या गतिशील SQL क्वेरी से वापस किया गया हो।

आप एसक्यूएल सर्वर का उपयोग कर रहे हैं, तो मैं आपको आमंत्रित तुम मेरे खुला स्रोत bsn ModuleStore परियोजना पर एक नजर है, यह DB स्कीमा संस्करण के लिए एक रूपरेखा है और कुछ हल्के ORM अवधारणा (क्रमबद्धता और वस्तुओं की अक्रमांकन के माध्यम से एस.पी. का उपयोग करते समय बुला एसपीएस)।

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

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