"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > हाइबरनेट में LazyInitializationException को कैसे हल करें?

हाइबरनेट में LazyInitializationException को कैसे हल करें?

2024-12-21 को प्रकाशित
ब्राउज़ करें:145

How to Solve the LazyInitializationException in Hibernate?

LazyInitializationException: मेथड कॉल से प्रॉक्सी तक नहीं पहुंच सकता

"LazyInitializationException का सामना करना: प्रॉक्सी प्रारंभ नहीं कर सका - कोई सत्र नहीं" त्रुटि आम तौर पर इंगित करती है हाइबरनेट एप्लिकेशन के भीतर आलसी लोडिंग के साथ एक समस्या। यह अपवाद तब होता है जब आप एक सक्रिय हाइबरनेट सत्र की सीमा के बाहर, किसी संबद्ध वस्तु या संग्रह जैसे किसी आलसी आरंभीकृत इकाई तक पहुंचने का प्रयास करते हैं। सबसे पहले हाइबरनेट सत्र स्थापित करना। हाइबरनेट संबंधित वस्तुओं या संग्रहों की लोडिंग को स्पष्ट रूप से अनुरोध किए जाने तक स्थगित करके प्रदर्शन में सुधार करने के लिए आलसी लोडिंग नामक एक तंत्र का उपयोग करता है।

इस अपवाद को दूर करने के लिए, आप कई दृष्टिकोण लागू कर सकते हैं:

  1. स्प्रिंग के @Transactional एनोटेशन का उपयोग करना:

    उस विधि को एनोटेट करें जो एक्सेस करता है जैसा कि नीचे दिखाया गया है, @Transactional के साथ आलसी रूप से भरी हुई इकाई:

    @Transactional सार्वजनिक मॉडल getModelByModelGroup(int modelGroupId) { // हाइबरनेट सत्र स्प्रिंग द्वारा स्वचालित रूप से प्रबंधित किया जाएगा }

    @Transactional
    public Model getModelByModelGroup(int modelGroupId) {
        // Hibernate session will be managed by Spring automatically
    }

    सत्र सत्र = SessionFactoryHelper.getSessionFactory().openSession(); session.beginTransaction(); कोशिश { // आलसी लोडेड इकाई तक पहुंचें और उसमें हेरफेर करें } पकड़ें (अपवाद पूर्व) { // अपवाद संभालें } अंत में { session.getTransaction().commit(); सत्र.बंद करें(); }

  2. इकाइयों की उत्सुक लोडिंग:

    विशिष्ट इकाई या उसके संघ के लिए आलसी लोडिंग अक्षम करें, हाइबरनेट को इकाई और उससे संबंधित लोड करने का निर्देश दें ऑब्जेक्ट तुरंत:

    Session session = SessionFactoryHelper.getSessionFactory().openSession();
    session.beginTransaction();
    try {
        // Access and manipulate lazily loaded entity
    } catch (Exception ex) {
        // Handle exception
    } finally {
        session.getTransaction().commit();
        session.close();
    }
  3. यदि वर्तमान संदर्भ में आलसी लोडेड इकाई की हमेशा आवश्यकता होती है तो यह दृष्टिकोण प्रदर्शन में सुधार कर सकता है। हालाँकि, यदि इकाई की हमेशा आवश्यकता नहीं होती है, तो इससे प्रदर्शन में कमी आ सकती है। तंत्र।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3