Hibernate forum से:
इस किताब से कार्रवाई में हाइबरनेट। अच्छा एक यह पढ़ ..
पहचानकर्ता द्वारा वस्तुओं प्राप्त कर रहा है निम्नलिखित हाइबरनेट कोड स्निपेट डेटाबेस से एक उपयोगकर्ता वस्तु को पुन: प्राप्त:
User user = (User) session.get(User.class, userID);
प्राप्त() विधि क्योंकि पहचानकर्ता खास है विशिष्ट रूप से एक वर्ग के एक उदाहरण की पहचान करता है। इसलिए अनुप्रयोगों के लिए एक सतत वस्तु के लिए सुविधाजनक हैंडल के रूप में पहचानकर्ता का उपयोग करना आम बात है। किसी ऑब्जेक्ट को पुनर्प्राप्त करते समय पहचानकर्ता द्वारा पुनर्प्राप्ति कैश का उपयोग कर सकती है, यदि ऑब्जेक्ट पहले ही कैश किया गया है तो डेटाबेस हिट से परहेज करें। हाइबरनेट भी एक लोड() विधि प्रदान करता है:
User user = (User) session.load(User.class, userID);
लोड() विधि पुराना है; उपयोगकर्ता अनुरोध के कारण प्राप्त करें() को हाइबरनेट के एपीआई में जोड़ा गया था। अंतर छोटा है:
यदि लोड() कैश या डेटाबेस में ऑब्जेक्ट नहीं पा रहा है, तो अपवाद फेंक दिया गया है। लोड() विधि कभी शून्य नहीं लौटाती है। प्राप्त करें() विधि शून्य देता है यदि वस्तु नहीं मिल पाती है।
भार() विधि वास्तविक निरंतर उदाहरण के बजाय प्रॉक्सी वापस कर सकती है। प्रॉक्सी एक प्लेसहोल्डर है जो वास्तविक ऑब्जेक्ट की लोडिंग को ट्रिगर करता है जब यह पहली बार एक्सेस किया जाता है; पर दूसरी ओर,() कभी प्रॉक्सी नहीं देता है। get() और load() के बीच चयन करना आसान है: यदि आप निश्चित हैं कि लगातार ऑब्जेक्ट मौजूद है, और nonexistence असाधारण माना जाएगा, लोड() अच्छा विकल्प है। यदि आप निश्चित नहीं हैं कि दिए गए पहचानकर्ता के साथ एक सतत उदाहरण है, तो प्राप्त करें() का उपयोग करें और यह देखने के लिए वापसी मूल्य का परीक्षण करें कि यह शून्य है या नहीं। लोड() का उपयोग एक और निहितार्थ है: एप्लिकेशन पर लगातार संदर्भ प्राप्त करने के लिए डेटाबेस को मारने के बिना एक वैध संदर्भ (प्रॉक्सी) पुनर्प्राप्त कर सकता है। तो लोड() एक अपवाद फेंक नहीं सकता है जब इसे कैश या डेटाबेस में लगातार ऑब्जेक्ट नहीं मिलता है; अपवाद बाद में फेंक दिया जाएगा, जब प्रॉक्सी का उपयोग किया जाता है। बेशक, पहचानकर्ता द्वारा ऑब्जेक्ट को पुनर्प्राप्त करना मनमाना क्वेरी का उपयोग करने के रूप में लचीला नहीं है।
मैं अभी एक सत्र डीबग कर रहा हूं, जहां सत्र।() प्रॉक्सी लौट रहा है! –
बहुत बहुत धन्यवाद! मेरे लिए पैसा हिस्सा था: "यदि लोड() को कैश या डेटाबेस में ऑब्जेक्ट नहीं मिल रहा है, तो एक अपवाद फेंक दिया जाता है। ऑब्जेक्ट नहीं मिल सकता है, तो get() विधि शून्य हो जाती है।" – Chris
सत्र के लिए जावाडॉक .get कहते हैं: दिए गए इकाई वर्ग के निरंतर उदाहरण को दिए गए पहचानकर्ता के साथ लौटें, या शून्य अगर ऐसा कोई निरंतर उदाहरण नहीं है। (उदाहरण के लिए, उदाहरण के लिए प्रॉक्सी, या सत्र के साथ पहले से जुड़ा हुआ है, उस उदाहरण या प्रॉक्सी को वापस कर दें।) तो पुस्तक से अनुभाग जो कहता है: "दूसरी ओर, प्राप्त करें() कभी प्रॉक्सी नहीं देता है।" सही नहीं है। – Vicky