प्राप्त करें () विधि

यदि आप किसी वस्तु को उसकी आईडी (या प्राथमिक कुंजी) द्वारा प्राप्त करना चाहते हैं, तो इसके लिए हाइबरनेट के तीन तरीके हैं:

  • भार()
  • पाना()
  • पाना()

वे वही करते हैं, लेकिन बारीकियां हैं। प्राप्त () विधि का सामान्य प्रारूप है:

EntityClass Name = session.get(EntityClass.class, Object primaryKey);

प्राप्त () विधि अपने दूसरे पैरामीटर के रूप में उस वस्तु की आईडी (प्राथमिक कुंजी) लेती है जिसे उसे वापस करने की आवश्यकता होती है। यह तब उस ऑब्जेक्ट को डेटाबेस से लोड करता है और उसे वापस कर देता है। उदाहरण:

User user = session.get(User.class, 2);

यदि इस आईडी के साथ एक रिकॉर्ड डेटाबेस में नहीं मिलता है, तो विधि शून्य हो जाएगी।

लोड () विधि

किसी वस्तु को लोड करने की दूसरी विधि लोड () विधि है । लोड () विधि का सामान्य प्रारूप समान है:

EntityClass Name = session.load(EntityClass.class, Object primaryKey);

हालाँकि, इसका व्यवहार get() विधि से भिन्न है ।

सबसे पहले, यह विधि एक वास्तविक वस्तु नहीं लौटाती है, लेकिन एक प्रॉक्सी: एक आभासी स्टब।

दूसरा, लोड () विधि का उपयोग करते समय , कोई जांच नहीं होती है कि डेटाबेस में ऐसी कोई प्रविष्टि है या नहीं। इसके बजाय, हाइबरनेट तुरंत पास की गई आईडी के साथ एक प्रॉक्सी ऑब्जेक्ट बनाता है और उसे वापस करता है।

तीसरा, प्रॉक्सी ऑब्जेक्ट के तरीकों को कॉल करते समय डेटाबेस के साथ सभी काम होंगे। यदि आप कॉल करने का प्रयास करते हैं, उदाहरण के लिए, getName() विधि , तो डेटाबेस के लिए पहला कॉल होगा। उदाहरण:

User user = session.load(User.class, new Integer(123));
String name = user.getName(); //this is where the first call to the database will occur

डेटाबेस में वस्तुओं की उपस्थिति की जांच के लिए लोड () विधि का उपयोग नहीं किया जाना चाहिए - यह बस इसे नहीं दिखाएगा। इसके अतिरिक्त, यदि आप एक अमान्य आईडी, जैसे शून्य, पास करते हैं, तो यह केवल शून्य हो जाएगा।

ढूँढें () विधि

जेपीए मानक से खोज () विधि सत्र इंटरफ़ेस पर पारित की गई थी। और जैसा कि आप जानते हैं, यह मानक न केवल विधियों के हस्ताक्षर का वर्णन करता है, बल्कि व्यवहार को भी नियंत्रित करता है।

यह विधि बिल्कुल get() विधि की तरह काम करती है । यदि पास की गई कुंजी द्वारा ऑब्जेक्ट नहीं मिला, तो विधि केवल शून्य हो जाएगी।

User user = session.find(User.class, -2); //method will return null

रीफ्रेश() विधि

एक अन्य उपयोगी तरीका जो किसी डेटाबेस से किसी वस्तु को लोड करने के साथ करना है, वह है रिफ्रेश () विधि ।

पास की गई वस्तु के आधार पर डेटाबेस में डेटा को अपडेट करने वाली पर्सिस्ट () विधि को याद रखें ? इसलिए, रिफ्रेश () विधि ठीक इसके विपरीत काम करती है: यह डेटाबेस से डेटा के आधार पर मौजूदा ऑब्जेक्ट को अपडेट करती है।

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

ऐसे मामलों में, डेटाबेस से वस्तु को फिर से पढ़ने के लिए उपयोगी हो सकता है यदि यह संभावना है कि यह बदल गया है। उदाहरण:

User user = new User();
user.setName("Kolyan");
session.persist(user);
session.flush();  //Force called SQL INSERT and call triggers

session.refresh(user);
// here we continue to work with the updated object