openSession
: जब आप फोन करते हैं SessionFactory.openSession
, तो यह हमेशा एक नई Session
वस्तु बनाता है और आपको देता है।
आपको इन सत्र वस्तुओं को स्पष्ट रूप से फ्लश और बंद करने की आवश्यकता है।
चूंकि सत्र ऑब्जेक्ट थ्रेड सुरक्षित नहीं हैं , इसलिए आपको बहु-थ्रेडेड वातावरण में प्रति सत्र एक सत्र ऑब्जेक्ट बनाने और वेब अनुप्रयोगों में भी प्रति अनुरोध एक सत्र बनाने की आवश्यकता है।
getCurrentSession
: जब आप कॉल SessionFactory.getCurrentSession
करते हैं, तो यह आपको सत्र ऑब्जेक्ट प्रदान करेगा जो कि हाइबरनेट संदर्भ में है और आंतरिक रूप से हाइबरनेट द्वारा प्रबंधित किया जाता है। यह लेनदेन के दायरे के लिए बाध्य है।
जब आप कॉल करते हैं SessionFactory.getCurrentSession
, तो यह एक नया बनाता हैSession
तो यह यदि यह मौजूद नहीं है, अन्यथा उसी सत्र का उपयोग करें जो वर्तमान हाइबरनेट संदर्भ में है। लेन-देन समाप्त होने पर यह स्वचालित रूप से फ़्लश करता है और सत्र बंद करता है, इसलिए आपको इसे बाहरी रूप से करने की आवश्यकता नहीं है।
यदि आप सिंगल-थ्रेडेड वातावरण में हाइबरनेट का उपयोग कर रहे हैं, तो आप उपयोग कर सकते हैं getCurrentSession
, क्योंकि यह हर बार एक नया सत्र बनाने की तुलना में प्रदर्शन में तेज है।
आपको hibernate.cfg.xml में निम्नलिखित संपत्ति जोड़ने की आवश्यकता हैgetCurrentSession
विधि का उपयोग करने के :
<session-factory>
<!-- Put other elements here -->
<property name="hibernate.current_session_context_class">
thread
</property>
</session-factory>
openSession()
या नहीं करता हैclose()
। वह केवल फोन करता हैgetCurrentSession()
। मुझे लगता है वहcurrent_session_context
करने के लिए सेट करता हैthread
। अब मुझे लगता है कि मैं समझता हूंgetCurrentSession()
। हालाँकि, मुझे नहीं पता कि मुझे कब उपयोग करना चाहिएopenSession()
।