10

मैं हाइबरनेट में आलसी लोडिंग को कैसे अक्षम करूं? मैं दृढ़ता एनोटेशन का उपयोग कर रहा हूं, एक एचबीएम एक्सएमएल फ़ाइल नहीं।हाइबरनेट में आलसी लोडिंग को अक्षम करें

मैं आईडी द्वारा एक ही वस्तु ला रहा हूं और सभी गुणों को लोड करना चाहता हूं। ऑब्जेक्ट का उपयोग करने से पहले सत्र बंद हो गया है।

धन्यवाद!

+0

इस सवाल का मेरे अलावा: मैं एक तरीका है कि प्रॉक्सी के बजाय, खाली संग्रह प्रदर्शित होगी में आलसी लोड हो रहा है निष्क्रिय कर सकते हैं कैसे? –

उत्तर

5

आप गुण आप गैर आलसी चाहते हैं कि FetchType.EAGER

@ManyToOne(fetch = FetchType.EAGER) 

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

यदि उन वस्तुओं में ऐसे संगठन भी हैं जिन्हें आप उत्सुकता से लोड करना चाहते हैं, तो आपको उन्हें भी एनोटेट करना होगा।

1

आप अपने सभी संघों पर fetch = FetchType.EAGER, रिकर्सिवली निर्दिष्ट कर सकते हैं, लेकिन इस डेटा की एक पूरी गुच्छा आप शायद में कोई दिलचस्पी नहीं कर रहे हैं लोड होगा।

यह आमतौर पर कम से कम सभी OneToMany और ManyToMany संघों जाने के लिए एक बेहतर समाधान है LAZY (जो डिफ़ॉल्ट है) के लिए, और सत्र को बंद करने से पहले उन्हें प्रारंभ करें यदि आपके उपयोग-मामले की आवश्यकता है (या उन्हें विज्ञापन-प्रसार क्वेरी के साथ भी लोड करें)।

OneToOne और ManyToOne एसोसिएशन डिफ़ॉल्ट रूप से ईगर हैं, और यह पहले से ही बहुत से अनुरोध उत्पन्न करता है। मैं आमतौर पर सब कुछ आलसी चिह्नित करना पसंद करता हूं, जब तक कि सभी उपयोग-मामलों को एसोसिएशन लाने की आवश्यकता न हो।

0

सभी संग्रह और इकाई के लिए fetch = FetchType.EAGER का उपयोग करें, जिसे आप आलसी होना चाहते हैं।

इसके अलावा इस की जाँच करें: http://techblog.bozho.net/?p=645

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