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