get() पद्धत

जर तुम्हाला एखादी वस्तू त्याच्या आयडी (किंवा प्राथमिक की) द्वारे मिळवायची असेल, तर हायबरनेटमध्ये यासाठी तीन पद्धती आहेत:

  • लोड()
  • मिळवा()
  • शोधणे()

ते समान गोष्ट करतात, परंतु बारकावे आहेत. get() पद्धतीचे सामान्य स्वरूप आहे:

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

get() पद्धत तिला परत करण्‍याची आवश्‍यकता असलेल्या ऑब्जेक्टचा ID (प्राथमिक की) त्‍याचे दुसरे पॅरामीटर घेते. ते नंतर डेटाबेसमधून ऑब्जेक्ट लोड करते आणि ते परत करते. उदाहरण:

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

या आयडीसह रेकॉर्ड डेटाबेसमध्ये आढळले नाही, तर पद्धत शून्य होईल.

load() पद्धत

ऑब्जेक्ट लोड करण्यासाठी दुसरी पद्धत load() पद्धत आहे . लोड() पद्धतीचे सामान्य स्वरूप समान आहे:

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

तथापि, त्याचे वर्तन get() पद्धतीपेक्षा वेगळे आहे .

प्रथम, ही पद्धत वास्तविक ऑब्जेक्ट परत करत नाही, परंतु प्रॉक्सी: एक आभासी स्टब.

दुसरे म्हणजे, load() पद्धत वापरताना , डेटाबेसमध्ये अशी नोंद आहे की नाही हे तपासले जात नाही. त्याऐवजी, हायबरनेट पास केलेल्या आयडीसह ताबडतोब प्रॉक्सी ऑब्जेक्ट तयार करतो आणि तो परत करतो.

तिसरे म्हणजे, प्रॉक्सी ऑब्जेक्टच्या पद्धतींना कॉल करताना डेटाबेससह सर्व कार्य होतील. तुम्ही कॉल करण्याचा प्रयत्न केल्यास, उदाहरणार्थ, 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

डेटाबेसमधील ऑब्जेक्ट्सची उपस्थिती तपासण्यासाठी load() पद्धत वापरली जाऊ नये - ती फक्त हे दर्शवणार नाही. या व्यतिरिक्त, जर तुम्ही अवैध आयडी, जसे की नल, त्यास पास केले तर ते फक्त शून्य परत येईल.

find() पद्धत

FIND() पद्धत JPA मानक वरून सत्र इंटरफेसवर दिली गेली. आणि जसे तुम्हाला माहिती आहे, हे मानक केवळ पद्धतींच्या स्वाक्षरीचे वर्णन करत नाही तर वर्तनाचे नियमन देखील करते.

ही पद्धत get() पद्धतीप्रमाणेच कार्य करते . पास केलेल्या कीद्वारे ऑब्जेक्ट सापडला नाही, तर पद्धत फक्त शून्य होईल.

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

refresh() पद्धत

डेटाबेसमधून ऑब्जेक्ट लोड करण्याशी संबंधित दुसरी उपयुक्त पद्धत म्हणजे refresh() पद्धत .

पास केलेल्या ऑब्जेक्टवर आधारित डेटाबेसमधील डेटा अपडेट करणारी Persist() पद्धत लक्षात ठेवा ? तर, refresh() पद्धत अगदी उलट कार्य करते: ती डेटाबेसमधील डेटावर आधारित विद्यमान ऑब्जेक्ट अपडेट करते.

हे वर्तन आवश्यक आहे जर, उदाहरणार्थ, डेटाबेसवर ऑब्जेक्ट लिहिताना, तेथे विविध संग्रहित प्रक्रिया कॉल केल्या जातात ज्या लिखित डेटा दुरुस्त करतात.

अशा प्रकरणांमध्ये, ऑब्जेक्टमध्ये बदल होण्याची शक्यता असल्यास डेटाबेसमधून पुन्हा वाचणे उपयुक्त ठरू शकते. उदाहरण:

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