मैं स्प्रिंग 3 और हाइबरनेट 3.6 के साथ एक वेबप्लिकेशंस विकसित करने पर काम कर रहा हूं। मुझे @Transactional
एनोटेशन और कोड की संरचना के लिए कुछ प्रश्न हैं।हाइबरनेट, वसंत, @ ट्रांस्सेक्शन - कोशिश/पकड़ के साथ घिरा हुआ?
-> जब मैं @Transactional
(वसंत के साथ लेनदेन प्रबंधन) का उपयोग करता हूं, तो क्या मुझे @Transactional
-Nototated विधियों को कॉल करते समय कोशिश/पकड़ने के साथ घूमना पड़ता है?
उदाहरण के लिए, जब मैं एक तरीका है जिसके लोड करता है, परिवर्तन और रिटर्न तो एक वस्तु हो गया और मैं किसी अन्य वर्ग से इसे कहते हैं: मैं कोशिश के साथ कॉल के चारों ओर की क्या ज़रूरत है/पकड़ने? शायद कुछ गलत हो जाता है, कोई वस्तु वापस नहीं आती है, डेटाबेस कनेक्शन विफल रहता है .. मुझे नहीं पता।
अब तक, मैंने सोचा था कि @Transactional
सभी संभावित होने वाले अपवादों की परवाह करता है और जब कोई त्रुटि होती है तो इस लेनदेन में प्रत्येक ऑपरेशन को वापस रोल करता है। लेकिन यदि ऐसा होता है, तो मुझे किसी भी तरह उपयोगकर्ता को सूचित करना होगा। जब मैं कोशिश-ब्लॉक में लेन-देन-विधि को कॉल करता हूं और इसे वापस ले जाता है, तो कैच ब्लॉक सक्रिय होता है? मैं तब उपयोगकर्ता को बता सकता हूं कि "कुछ गलत हो गया"। अन्यथा उपयोगकर्ता को सूचित नहीं किया जाएगा?
या यह अगर वहाँ एक वस्तु लौट आए (/ else if), तो मैं कोशिश की जरूरत है न/पकड़ने की जाँच करने के लिए पर्याप्त है? मैं नया हूं और मैं सुनना चाहता हूं कि उनके कोड की अन्य संरचना कैसे होती है। धन्यवाद :-)
क्या आप कोड उदाहरण के बारे में गंभीर हैं? अपवादों को इस तरह निगलना नहीं चाहिए। इस तरह प्रॉक्सी अपवाद का पता लगाने और लेनदेन को वापस रोल करने का कोई मौका नहीं है। मुझे उम्मीद है कि आप इस तरह कुछ मतलब करेंगे: 'पकड़ो (कुछ एक्सेप्शन एक्स) {नया अवैध स्टेटस्ट एक्सेप्शन (एक्स्ट) फेंक दें;} ' –
@ सेन यह सिर्फ छद्म कोड है। मुझे उम्मीद है कि वह जब तक एक अपवाद निगल नहीं है ऐसा करने का उसका एक अच्छा कारण था। –
यही कारण है कि मैं पूछ रहा हूं, डाउनवॉटिंग नहीं। आपको इस तरह की चीजों को स्पष्ट करना चाहिए, –