अगर कोई यह व्याख्या कर सकता है कि यह एनोटेशन क्या करता है और जब हम इसका सही उपयोग करते हैं:
@Transactional(propagation=Propagation.REQUIRED)
धन्यवाद
अगर कोई यह व्याख्या कर सकता है कि यह एनोटेशन क्या करता है और जब हम इसका सही उपयोग करते हैं:
@Transactional(propagation=Propagation.REQUIRED)
धन्यवाद
जवाबों:
जब प्रचार सेटिंग PROPAGATION_REQUIRED की जाती है, तो प्रत्येक पद्धति के लिए एक तार्किक लेन-देन गुंजाइश बनाई जाती है, जिस पर सेटिंग लागू की जाती है। इस तरह के प्रत्येक तार्किक लेन-देन का दायरा व्यक्तिगत रूप से रोलबैक-स्थिति का निर्धारण कर सकता है, बाहरी लेनदेन का दायरा आंतरिक लेनदेन के दायरे से तार्किक रूप से स्वतंत्र है। बेशक, मानक PROPAGATION_REQUIRED व्यवहार के मामले में, इन सभी स्कोपों को समान भौतिक लेनदेन के लिए मैप किया जाएगा। तो आंतरिक लेन-देन के दायरे में सेट किया गया एक रोलबैक-केवल मार्कर वास्तव में प्रतिबद्ध होने के लिए बाहरी लेनदेन के अवसर को प्रभावित करता है (जैसा कि आप इसकी उम्मीद करेंगे)।
http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html
यदि आपको स्प्रिंग डॉक्स में उपलब्ध कराए गए उपयोग से परे एक स्पष्टीकरण की आवश्यकता है
इस कोड पर विचार करें ...
class Service {
@Transactional(propagation=Propagation.REQUIRED)
public void doSomething() {
// access a database using a DAO
}
}
जब doSomething () कहा जाता है, तो यह पता चलता है कि इसे निष्पादित करने से पहले डेटाबेस पर लेनदेन शुरू करना होगा। यदि इस विधि के कॉलर ने पहले ही एक लेन-देन शुरू कर दिया है, तो यह विधि उसी भौतिक का उपयोग करेगी वर्तमान डेटाबेस कनेक्शन पर लेनदेन का ।
यह @Transactional
एनोटेशन आपके कोड को बताने का एक साधन प्रदान करता है जब यह निष्पादित करता है कि यह होना चाहिए एक लेन-देन । यह एक के बिना नहीं चलेगा, इसलिए आप अपने कोड में यह धारणा बना सकते हैं कि आप अपने डेटाबेस में अपूर्ण डेटा के साथ नहीं रहेंगे, या अपवाद होने पर कुछ को साफ करना होगा।
लेन-देन प्रबंधन एक काफी जटिल विषय है, इसलिए उम्मीद है कि यह सरलीकृत उत्तर सहायक है
@Transactional
अपनी सेवा परत में जोड़ लिया @Transactional
है, तो उस लेनदेन के भीतर बुलाए जा रहे डीएओ के तरीकों को भी जोड़ने की कोई आवश्यकता नहीं है ।
doSomething()
बिना किसी @transactional के किसी अन्य नेस्टेड विधि को लागू किया जाता है, तो क्या यह उसी लेनदेन के लिए लागू होगा?
यदि आप <tx:annotation-driven/>
किसी भी वर्ग / विधि के साथ एनोटेशन आधारित लेन-देन सहायता सक्षम करते हैं, तो स्प्रिंग एप्लिकेशन में, यदि आप @ ट्रेंसेक्शनल (प्रोपेगेशन = प्रचार) के साथ किसी भी वर्ग / पद्धति का एनोटेट करते हैं तो स्प्रिंग फ्रेमवर्क एक लेनदेन शुरू करेगा और विधि को निष्पादित करेगा और लेन-देन शुरू करेगा। यदि कोई RuntimeException हुई, तो लेन-देन वापस हो जाएगा।
वास्तव में प्रचार = प्रसार.आधारित डिफ़ॉल्ट डिफ़ॉल्ट स्तर है, आपको इसका स्पष्ट उल्लेख करने की आवश्यकता नहीं है।
अधिक जानकारी के लिए: http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/transaction.html#transaction-declarative-annotations
लेन-देन प्रबंधन के लिए अपनाई गई विभिन्न लेन-देन सेटिंग्स और व्यवहार को समझने के लिए, जैसे REQUIRED
,ISOLATION
आदि के आपको लेनदेन प्रबंधन की मूल बातें स्वयं समझनी होंगी।
स्पष्टीकरण पर अधिक के लिए ट्रैसैक्शन प्रबंधन पढ़ें ।