बस वसंत लेनदेन के कामकाज मुझे पता है कि क्या निम्नलिखित मामले में जहां एक विधि @Transactional
के रूप में चिह्नित एक और तरीका @Transactional
के रूप में चिह्नित कॉल में क्या होता है चाहता हूँ समझने के लिए।वसंत लेनदेन को समझना - क्या होता है जब एक लेनदेन विधि किसी अन्य लेनदेन विधि को कॉल करती है?
मान लें कि कॉन्फ़िगरेशन सभी डिफ़ॉल्ट सेटिंग्स का उपयोग करता है।
@Service("myService")
@Transactional
public MyService{
public void myServiceMethod(){
myDAO.getSomeDBObjects();
}
}
@Repository("myDAO")
@Transactional
public MyDAOWithUsesBeyondMyService{
public void getSomeDBObjects(){...}
}
अब अगर मैं MyService.myServiceMethod()
दर्ज करने के लिए थे यह स्पष्ट रूप से एक सौदे शुरू होगा। फिर, myDAO.getSomeDBObjects()
में ड्रिलिंग पर क्या होगा? क्या तथ्य यह है कि एक लेनदेन पहले से मौजूद है क्योंकि कोई नया लेनदेन पैदा नहीं हुआ है, या क्या मैं यहां दो लेनदेन कर रहा हूं?
प्रचार पर (नीचे उद्धृत) प्रलेखन को कवर करना प्रतीत होता है, लेकिन मैं अपनी समझ को सत्यापित करना चाहता हूं, यह मेरे कुंवारी दिमाग के लिए एक बार में सब कुछ समझने के लिए थोड़ा सा था।
प्रचार: आमतौर पर, सब कोड एक सौदे गुंजाइश के भीतर क्रियान्वित है कि सौदे में चलेंगे। हालांकि, आप घटना में व्यवहार को निर्दिष्ट है कि एक व्यवहार विधि निष्पादित किया जाता है जब एक सौदे संदर्भ पहले से मौजूद है का विकल्प है। उदाहरण के लिए, मौजूदा लेनदेन में कोड चल रहा है ( सामान्य मामला); या मौजूदा लेनदेन को निलंबित किया जा सकता है और एक नया लेनदेन बनाया जा सकता है। स्प्रिंग ईजेबी सीएमटी से परिचित लेनदेन प्रचार विकल्पों के सभी प्रदान करता है। वसंत में लेन-देन प्रसार की के बारे में अर्थ विज्ञान पढ़ने के लिए, धारा 10.5.7, "लेन-देन प्रसार" देखते हैं।
धन्यवाद, हाँ, मैं ऐसा करने का इरादा नहीं है, लेकिन जब मुझे एहसास हुआ कि मैंने सेवा कक्षा स्तर पर @ ट्रांसेक्शनल घोषित कर दिया है, तो सेवा को ध्यान में रखा गया था, और सेवा की एक विधि सेवा की एक और विधि (लेनदेन दोनों) को बुला रही थी। बेशक मैंने पढ़ना और महसूस किया कि, जैसा कि मैं प्रॉक्सी का उपयोग कर रहा हूं, यह दूसरी विधि लेनदेन संबंधी प्रॉक्सी द्वारा प्रबंधित नहीं की जाएगी, इस प्रकार यह किसी भी अन्य विधि कॉल की तरह है (जो कि एक नए आरंभ किए गए मस्तिष्क को उलझाने के लिए पर्याप्त है)। :) लेकिन यह मुझे यह सुनिश्चित करने के लिए उत्सुक बना देता है कि मैं यह समझता हूं कि यह सब कैसे काम करता है, आपने स्पष्ट किया है कि मेरे लिए यह अच्छी तरह से है। धन्यवाद! –
@ डेविड मुझे लगता है कि आप प्रॉक्सी अवधारणा को थोड़ा सा गलत समझते हैं। मेरा अपडेट पढ़ें। –
आप बिल्कुल सही हैं, मेरी टिप्पणी गलती में थी (वास्तव में मैंने ऐसा कहने के बिना धारणाओं को बदल दिया), लेकिन मैं समझता हूं कि आप क्या कह रहे हैं, और इसके बाद मुझे लगता है कि पूरी चीज अब मेरे सिर में अच्छी तरह से जड़ है। अद्यतन और महान आरेखों के लिए धन्यवाद, मुझे यकीन है कि कई अन्य लोगों को भविष्य में उनकी खोजों में उपयोगी लगेगा! –