2009-05-11 20 views
13

बस nHibernate के बारे में पढ़ना, कक्षा गुणों को वर्चुअल क्यों होना चाहिए?निबर्ननेट और वर्चुअल क्लास गुण?

इसके पीछे तर्क क्या है? क्योंकि हम सदस्यों की जरूरत है ताकि हमारे आलसी लोड हो रहा है जादू/वूडू करने के लिए आभासी होने के लिए:

उत्तर

18

मैं आप पढ़ सकते हैं Must Everything Be Virtual With NHibernate?

उस प्रश्न का त्वरित जवाब है सुझाव है।

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

6

जैसा कि एंड्रयू ने कहा, संपत्ति आलसी लोडिंग को ट्रिगर करने के लिए आभासी हैं। यहां एक स्पष्टीकरण दिया गया है कि यह क्यों है: रनटाइम पर NHibernate आपकी वास्तविक संपत्ति वस्तुओं के लिए प्रॉक्सी ऑब्जेक्ट्स को प्रतिस्थापित करेगा। एक बार उन्हें एक्सेस करने के बाद, प्रॉक्सी ऑब्जेक्ट्स जानते हैं कि आपके लिए असली ऑब्जेक्ट कैसे प्राप्त करें। गुणों को वर्चुअल के रूप में चिह्नित करने से यह प्रतिस्थापन हो सकता है।

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