मुझे समझ नहीं आता आप के साथ "मैं आलसी लोड हो रहा है किया" क्या मतलब है उत्पन्न करता है। आलसी लोडिंग एक सुविधा है, इसे डिफ़ॉल्ट रूप से चालू किया जाता है और यदि आप इसे पसंद नहीं करते हैं तो आप इसे बंद कर सकते हैं।
दो प्रकार की आलसी लोडिंग हैं: अन्य संस्थाओं और सूचियों के संदर्भों के लिए।
इस इकाई को देखते हुए:
class Entity
{
// pk
int id { get; private set; }
// reference to another entity
User MyUser { get; set; }
// list to other entities
IList<Comments> MyComments { get; set; }
}
लेज़ी उपयोगकर्ता
के संदर्भ पर लोड हो रहा है आप उपयोगकर्ता पर आलसी लोड हो रहा है है, तो आप उपयोगकर्ता वर्ग आभासी के सभी सदस्यों को परिभाषित करने की जरूरत। NHibernate एक तथाकथित प्रॉक्सी बना देगा। प्रॉक्सी रनटाइम पर परिभाषित एक वर्गीकृत है जो उपयोगकर्ता से प्राप्त होता है। आपका कोड इसे उपयोगकर्ता के रूप में एक्सेस कर रहा है और यह पता नहीं है कि उप-वर्ग है। लेकिन जब आप पहली बार अपने सदस्यों में से किसी एक तक पहुंचते हैं, तो गुण डेटाबेस से लोड होते हैं।
आप उपयोगकर्ता वर्ग पर आलसी लोड हो रहा है बंद करना चाहते हैं, तो आप अपने मानचित्रण में ऐसा करने की जरूरत:
<class name="User" lazy="false"> ...
तो NHibernate हमेशा बनाता है के प्रकार के उपयोगकर्ता, कोई प्रॉक्सी उदाहरणों। आपको वर्चुअल कुछ भी करने की आवश्यकता नहीं है।
लेज़ी टिप्पणी
आप टिप्पणी की सूची पर आलसी लोड हो रहा है का उपयोग करते हैं की सूची पर लोड हो रहा है, यह सूची ही है कि आलसी लोड हो रहा है लागू करता है। यदि आप पहली बार सूची तक पहुंचते हैं, तो यह डेटाबेस से लोड होता है। NHibernate एक सूची का उपयोग करता है जो IList लागू करता है, लेकिन सूची नहीं है।
आप सूची में आलसी लोड हो रहा है बंद करना चाहते हैं, तो आप इकाई की मैपिंग में ऐसा करते हैं:
<class name="Entity">
<bag name="MyComments" lazy="false" >
...
आमतौर पर, आलसी लोड हो रहा है एक अच्छी बात है, और आप आवेदन के बारे में परवाह नहीं है यह बहुत लेकिन कुछ जोखिम हैं। उदाहरण के लिए, यदि आप एक उदाहरण को क्रमबद्ध करते हैं, और यह प्रॉक्सी है, तो आपको किसी भी उपयोगी के बजाय प्रारंभिक प्रॉक्सी नहीं मिलती है। आलसी लोडिंग केवल तब तक काम करती है जब तक सत्र खुला रहता है। आलसी लोडिंग का उपयोग करना हमेशा तेज़ नहीं होता है। यदि आपको वैसे भी सभी डेटा लोड करने की आवश्यकता है, तो इसे एक टुकड़े में लोड करने के लिए तेज़ी से।
तो कॉन्फ़िगरेशन सावधानीपूर्वक करने की आवश्यकता है।
संपादित करें:
अपने मूल सवाल का जवाब करने के लिए: आलसी लोड हो रहा है NHibernate के लिए की आवश्यकता है? नहीं, लेकिन: क्या मेरे आवेदन में आलसी लोडिंग आवश्यक है? शायद हां।
मुझे लगता है कि केवल छोटे और छोटे छोटे अनुप्रयोगों को आलसी लोडिंग की आवश्यकता नहीं है। यदि आपके पास कई लगातार कक्षाओं के साथ एक प्रणाली है, तो आपको आलसी लोडिंग की आवश्यकता होगी।
मेरे उत्तर में एक और अनुभाग जोड़ा गया। –