एनएचबर्ननेट बड़ा और शक्तिशाली है लेकिन आपको इसके बारे में सब कुछ पता नहीं है इसका उपयोग सफलता प्राप्त करने के लिए। आपके सवालों के जवाब के लिए:
नेट सूक्ष्म ORMS के सभी किसी भी LINQ समर्थन है कि मैं के बारे में पता है और इसके बजाय अपने कोड में एसक्यूएल तार मिश्रण पर भरोसा नहीं है। LINQ के साथ अपने प्रश्नों का निर्माण करना आपको टाइप-सुरक्षा, संकलन-समय की जांच, और महान रिफैक्टरिबिलिटी प्रदान करता है। यदि सभी प्रश्न SQL स्ट्रिंग का उपयोग कर रहे हैं तो इसमें हजारों प्रश्नों के साथ कोडबेस को दोबारा करने का प्रयास करें ... yikes! और रिफैक्टरिंग करके, मेरा मतलब है कि नए कॉलम, नई टेबल इत्यादि को जोड़ने के रूप में कुछ सरल है जो एंटरप्राइज़ वातावरण में हर समय होता है। रिफैक्टरिंग स्ट्रिंग्स संभव है, हेक लोगों को अभी भी करना है जो संग्रहीत प्रक्रियाओं पर भरोसा करते हैं, लेकिन मुझे यकीन है कि अगर मैं अपने निपटान में टाइप-सुरक्षा करता हूं तो ऐसा करने का फैसला नहीं होगा।
आलसी लोडिंग के साथ, केवल एक चीज जो आपको ध्यान में रखना है वह एक चयन एन + 1 परिदृश्य बना रही है। किसी भी समय जब आप किसी डोमेन ऑब्जेक्ट/इकाई पर फ़ोरैच लूप कर रहे हैं, तो सुनिश्चित करें कि ऑब्जेक्ट (ओं) को पॉप्युलेट करने वाली क्वेरी ने फ़ेच() विधि का उपयोग किया जो आसानी से SQL में जॉइन बनाता है और किसी भी बच्चे ऑब्जेक्ट को पॉप्युलेट करता है। अन्यथा, जब आप ऑब्जेक्ट पर किसी भी बच्चे ऑब्जेक्ट में ऑब्जेक्ट करते हैं और डॉट करते हैं, तो ओआरएम को डेटा लाने के लिए एक और चयन कथन निष्पादित करना होगा। असल में, NHibernate लिंगो में, उत्सुक fetching आपका दोस्त है।
बैचिंग एनएचबेर्नेट के साथ पाई जितनी आसान है। अपने एनएचबीर्नेट कॉन्फ़िगरेशन में, बैचिंग चालू करें और यही वह है। उसके बाद, यदि आपको आवश्यकता हो, तो आप विशेष प्रश्नों के लिए रनटाइम पर बैच आकार समायोजित कर सकते हैं।
मैंने कभी भी दूसरे स्तर पर कैशिंग का उपयोग नहीं किया है।मैं एक बड़े उद्यम वातावरण में काम करता हूं और हमारे ऐप्स कैशिंग के लिए किसी भी आवश्यकता के बिना बहुत तेजी से दौड़ते हैं। NHibernate में पहला स्तर कैश हालांकि कॉन्फ़िगरेशन की आवश्यकता नहीं है और इसे केवल ट्रैकिंग ट्रैकिंग के रूप में सोचा जा सकता है। असल में, आंतरिक रूप से एनएचबेर्नेट एक शब्दकोश रखता है जिसमें से यह ऑब्जेक्ट्स डेटाबेस से पहले से ही पुनर्प्राप्त हो चुका है और डेटाबेस में सहेजे/अपडेट किए जाने के लिए कौन सी ऑब्जेक्ट लंबित हैं। पहला स्तर कैश ऐसा कुछ है जिसे मैं वास्तव में कभी नहीं सोचता लेकिन मुझे लगता है कि यह एक प्राथमिक स्तर पर जानना अच्छा है कि यह कैसे काम करता है।
फिर से, मैं वर्तमान में एक एंटरप्राइज़ वातावरण में काम करता हूं और हमारे पास NHibernate का उपयोग करके सभी प्रकार के अनुप्रयोग हैं; एनएचबीर्नेट को पेश करने वाली सभी शक्तिशाली सुविधाओं का उपयोग करके कुछ सुंदर बुनियादी और अन्य। हालांकि मैंने अपने अनुभव में आमतौर पर जो देखा है, वह यह है कि टीम के हर सदस्य को एनएचबीर्नेट विशेषज्ञ होने की आवश्यकता नहीं है। आम तौर पर 1 - 3 डेवलपर्स बहुत जानकार होंगे और हर कोई इसके बारे में चिंता नहीं करेगा और सिर्फ अपनी संस्थाओं, मैपिंग्स और अपने प्रोग्रामिंग के साथ आगे बढ़ेगा। एक बार आधारभूत संरचना हो जाने के बाद और आपके संगठन ने उन पैटर्नों को हल किया है जो इसे उपयोग करना चाहते हैं, सब कुछ आमतौर पर एक हवा है।
अतिरिक्त विचार:
एक ही स्थान पर कि NHibernate वास्तव में चमकता है पागल डेटाबेस डिजाइन के किसी भी प्रकार है कि आप इसे फेंक मैप करने के लिए की क्षमता है। अब मैं यह नहीं कह रहा हूं कि शुरुआती 9 0 के दशक में कुछ पागल डेटाबेस डिज़ाइन को एक साथ रखा जा सकता है, जहां आपको एक संग्रहीत प्रक्रिया और एक और तालिका में एक साथ शामिल होना है, लेकिन संभव है। मैंने अपने दिन में कुछ पागल मैपिंग किया है। कुछ मैंने सोचा कि असंभव था क्योंकि डेटाबेस को ऐसा करने के लिए डिज़ाइन नहीं किया गया था जिसे हम करना चाहते थे, लेकिन हर बार, दृढ़ता से, मैं अभी भी अच्छे और खराब डेटाबेस डिज़ाइन दोनों को मैप करने में एनएचबीर्नेट की अविश्वसनीय लचीलापन के साथ इसे खींचने का प्रबंधन करता हूं।
माइक्रो-ओआरएमएस के साथ, आप आम तौर पर अपने कोड के साथ एम्बेडेड एसक्यूएल स्ट्रिंग के एक टन के साथ समाप्त होते हैं। यह कैसे साफ और कुशल माना जाता है। ऐसा लगता है कि सभी लोग ऐसा कर रहे हैं जो वे अपने कोड में संग्रहीत प्रक्रियाओं में डाल करने के लिए उपयोग करते हैं। मैं वास्तव में अपनी कुछ परियोजनाओं में माइक्रो-ओआरएम का उपयोग करता हूं, हालांकि यह समझ में आता है, लेकिन आम तौर पर जब मैं केवल कुछ टेबल के लिए एक टेबल पर पूछताछ करता हूं - जटिल जटिल कहां नहीं।
निष्पक्ष होने के लिए, मैं उन लोगों में से एक हूं जिन्होंने एनएचबीरनेट के इंस और आउट सीखने में थोड़ा सा समय निवेश किया है, लेकिन ऐसा इसलिए नहीं क्योंकि मुझे काम के लिए जरूरी था, लेकिन क्योंकि मैं बस चाहता था। मैं काम पर बहुत से लोगों के साथ काम करता हूं जो हर दिन एनएचबीरनेट का उपयोग करते हैं और इसे पूरी तरह से प्राप्त नहीं करते हैं। लेकिन फिर, उन्हें जरूरत नहीं है। आपको बस कुछ बुनियादी चीजों को जानने की जरूरत है और आप जाने के लिए अच्छे हैं।
उम्मीद है कि इससे मदद मिलती है।
स्रोत
2012-08-03 08:44:48