जब मैं डीबी से कनेक्ट करने के लिए हाइबरनेट को कॉन्फ़िगर करता हूं और किसी कारण से कनेक्शन विफल रहता है, मैंने देखा कि यह किसी भी अपवाद को फेंक नहीं देता है और न ही कारखाने का निर्माण करते समय (जो स्वीकार्य है) और न ही जब मैं sessionFactory.openSession() (जिसे कम स्वीकार्य है) कहते हैं। सत्र और फैक्ट्री.ऑपेन सत्र() कॉल करने के बाद सत्र.इस कनेक्ट() सही हो जाता है। (जो पूरी तरह से अस्वीकार्य है)।ओपन सत्र को खोलने पर हाइबरनेट अपवाद नहीं फेंकता है और डीबी से कनेक्शन स्थापित नहीं किया जा सकता है
उस क्षण तक एकमात्र संकेत जो मुझे बताता है कि यह डीबी से कनेक्ट नहीं है, एक java.sql.SQLException के कारण एक चेतावनी लॉग प्रविष्टि है जो आंतरिक रूप से पकड़ता है और केवल लॉगर को भेजता है। एक अपवाद को मजबूर करने के लिए छद्म लेनदेन बनाने के अलावा कनेक्शन स्थिति प्राप्त करने का कोई अन्य तरीका है? (हो सकता है कि कॉन्फ़िगरेशन में एक विकल्प "असफल कनेक्शन प्रयास लॉग न करें, लेकिन एक हाइबरनेट अपवाद फेंक दें)। मैंने खोज की है लेकिन कुछ भी नहीं मिला। बहुत धन्यवाद।
मुझे यहां तीन चीजों को स्पष्ट करने दें: 1) अपवाद केवल तभी फेंक दिया जाएगा जब पूल प्राप्त नहीं कर सकता है या कोई कामकाजी कनेक्शन नहीं बना सकता है - इसे केवल इसलिए नहीं फेंक दिया जाएगा क्योंकि एक विशेष कनेक्शन विफल हो गया है; 2) हाइबरनेट वास्तव में आवश्यक होने तक कनेक्शन प्राप्त करने का प्रयास नहीं करेगा: 'openSession()' ** ** ** प्राप्त नहीं करता है; 3) हाइबरनेट कनेक्शन अपवाद छिपाएगा नहीं; हालांकि, यह इसे जेडीबीसीएक्सप्शन में परिवर्तित कर देगा जो अनचेक किया गया है जो आपको पकड़ना चाहिए। – ChssPly76
मुझे यकीन नहीं है कि आप वास्तव में कनेक्शन के असफल होने के बारे में इतना क्यों ख्याल रखते हैं _immediately_ जब आप वास्तव में इसके साथ कुछ करने का प्रयास करते हैं; लेकिन यदि आप करते हैं, तो 'openSession()। कनेक्शन()' जिसे ** ** प्राप्त करने का प्रयास करें और 'JDBCException' को पकड़ें, जिससे आप नेस्टेड' SQLException' प्राप्त कर सकते हैं, यदि यह विफल हो जाता है। – ChssPly76
आपकी पहली टिप्पणी ने चीजों को स्पष्ट किया। एकमात्र चीज जो अब अजीब और बहुत प्रतिद्वंद्वी लगता है यह है: चूंकि आपने कहा है कि हाइबरनेट कनेक्शन प्राप्त करने का प्रयास नहीं करेगा, अगर उसे इसकी आवश्यकता नहीं है, तो सत्र.इस कनेक्ट() विधि होने का क्या मतलब है? क्या मुझे विश्वास करने के लिए किसी भी तरह से कनेक्शन प्राप्त करने की कोशिश करने की ज़रूरत है क्या कनेक्ट है() का रिटर्न वैल्यू?यदि हां, तो मुझे इसकी आवश्यकता नहीं है क्योंकि मुझे प्रयास में अपवाद मिलेगा। यह समझ में नहीं आता है ... – Paralife