lazy=true
विशेषता अभिभावक और बाल संग्रह की आलसी लोडिंग सक्षम है और एक ही चीज़ fetch="select"
विशेषता है। क्या lazy="true"
और fetch="select"
के बीच हाइबरनेट में कोई अंतर है?हाइबरनेट में आलसी = "सत्य" और fetch = "select" के बीच क्या अंतर है?
उत्तर
हां।
lazy
विशेषता को बच्चों को प्राप्त करने के लिए हाइबरनेट बताती है।
fetch
विशेषता बच्चों को प्राप्त करने के लिए हाइबरनेट बताती है।
जब आप कहते हैं कि
आलसी = सच विशेषता लाने = माता पिता और बच्चे संग्रह और एक ही बात की आलसी लोड हो रहा है सक्षम है विशेषता
कि बाहर फ्लैट गलत है "का चयन करें"। चुनिंदा fetch रणनीति आलसी लोडिंग बंद करने के समान नहीं है। वास्तव में, from the documentation
प्राप्त कर रहा है चुनें: एक दूसरे का चयन जुड़े संस्था या संग्रह पुनः प्राप्त करने के लिए किया जाता है। जब तक आप आलसी = "झूठी" निर्दिष्ट करते हुए स्पष्ट रूप से आलसी लाने को अक्षम नहीं करते हैं, तो यह दूसरा चयन केवल तभी निष्पादित किया जाएगा जब आप एसोसिएशन तक पहुंचें।
जब हम fetch="select"
कहते हैं, तो यह हमेशा अलग-अलग क्वेरी संघ वस्तुओं भले ही वह lazy ="false"
है पुनः प्राप्त करने में सक्रिय होगा।
लेकिन जब हम lazy ="true"
कहते हैं, तो इसका मतलब है कि यह एक अलग क्वेरी में एसोसिएशन ऑब्जेक्ट्स को पुनर्प्राप्त करेगा, लेकिन ऑब्जेक्ट को लोड करने के समय नहीं, लेकिन जब एसोसिएशन को पहली बार एक्सेस किया जाता है। हम इसे list().size()
कहकर कर सकते हैं।
जब हम कहते हैं fetch="join"
यह डेटाबेस से एसोसिएशन ऑब्जेक्ट्स प्राप्त करने के लिए हमेशा एक ही क्वेरी को आग लगाएगा।
हाइबरनेट में एन प्रश्नों (अभिभावक बाल संबंध) के लिए एन + 1 चुनिंदा समस्या को हल करने के लिए हम fetch = "select" के बजाय fetch = "join" का उपयोग करते हैं। आलसी सेटिंग यह तय करती है कि अभिभावक वस्तु को लोड करते समय बाल वस्तुओं को लोड करना है या नहीं। आपको इस सेटिंग को मूल वर्ग की संबंधित हाइबरनेट मैपिंग फ़ाइल करने की आवश्यकता है। आलसी = सत्य (बच्चे को लोड न करने का मतलब है) डिफ़ॉल्ट रूप से बच्चे की वस्तुओं की आलसी लोडिंग सत्य है ।
धन्यवाद। मुझे एक और संदेह है जब मैं प्रॉक्सी फ़ेचिंग या "नो-प्रॉक्सी" लाने के लिए अंतर resouce पढ़ रहा हूं, उन्हें सिंगल-वैल्यूड एसोसिएशन कहा जाता है। हाइबरनेट में एक एकल मूल्यवान एसोसिएशन क्या है? – user1127214