2009-02-17 14 views
5

जिस परियोजना पर मैं काम कर रहा हूं वह सीधे जेडीबीसी डेटा एक्सेस को अपने बॉयलरप्लेट महिमा में उपयोग करता है और किसी भी लेनदेन का उपयोग नहीं करता है। मुझे लेन-देन का उपयोग करना और डेटा एक्सेस विधियों को लिखने के तरीके को सरल बनाना महत्वपूर्ण है, खासकर कुछ बदलावों के साथ। परियोजना काफी समय से आसपास रही है और यह एक ओआरएम ढांचे के अनुकूल नहीं है। यह बहुत सारे सिंगलेट्स (यूघ) का उपयोग करता है और इसे निर्भरता इंजेक्शन का उपयोग करने में सक्षम बनाने के लिए इसे उलझन में काम करता है और मुझे नहीं लगता कि मैं किसी को भी यह समझाने में सक्षम हूं कि हमें अब ऐसा करना चाहिए।आईओसी कंटेनर के बाहर सरल वसंत जेडीबीसी लेनदेन कैसे करें?

मुझे स्प्रिंग जेडीबीसी का इंटरफेस पसंद है, खासकर इसके SimpleJdbcTemplate के माध्यम से। मेरा सवाल यह है कि प्रत्येक डेटा एक्सेस विधि में या स्प्रिंग आईओसी कंटेनर या एओपी का उपयोग करके कुछ भी प्रोग्रामेटिक रूप से सेट किए बिना, इसके लिए कुछ सरल (प्रति सर्वलेट अनुरोध) लेनदेन को कैसे सक्षम किया जाए। मैंने अपने स्वयं के आर्किटेक्चर के साथ खेला है जो SimpleJdbcTemplate के समान इंटरफ़ेस के साथ समाप्त होता है और अनुरोध के संदर्भ में इसे कॉल करते समय एक अनुरोध-स्थानीय कनेक्शन और लेनदेन का उपयोग कर सकता है (ServletRequestListener के माध्यम से ThreadLocal के साथ)। ऐसा लगता है कि यह अच्छी तरह से काम करता है, लेकिन मुझे लगता है कि स्प्रिंग जेडीबीसी जैसी अच्छी बाहरी पुस्तकालय का उपयोग करना बेहतर होगा।

किसी के पास इसका कोई अनुभव है?

उत्तर

5

शायद आप और TransactionCallback का उपयोग कर सकते हैं जैसा कि Programmatic Transaction Management में वर्णित है?

+0

यह काफी काम नहीं करता है कि मैं कैसे सोच रहा था, क्योंकि इसे संभवतः JdbcTemplate पर प्रत्येक कॉल होने के बजाय लेनदेन टेम्पलेट का उपयोग करके उच्च अनुप्रयोग स्तर पर प्रोग्रामेटिक रूप से रैपिंग कॉल की आवश्यकता होगी, यदि संभव हो तो अनुरोध-स्थानीय लेनदेन का उपयोग करें। हालांकि यह ठीक काम करना चाहिए। – ColinD

0

स्प्रिंग एओपी कक्षाओं के बारे में चिंता करने के बिना आपके लिए घोषणात्मक रूप से आपके लिए लेनदेन संभालती है। यदि आप जेडीके 5 या उच्चतर और स्प्रिंग 2.5 का उपयोग कर रहे हैं, तो आपके पास annotations के साथ भी बेहतर है।

मैं प्रति-सर्वव्यापी लेन-देन से असहमत हूं। आपके पास एक सेवा स्तर होना चाहिए, जो ऐप का हिस्सा है जो काम की इकाइयों के बारे में जानता है। नियंत्रक सेवाओं में कॉल करते हैं, जो लेनदेन को संभालते हैं।

+0

मैंने इस सवाल में उल्लेख किया है कि आवेदन वर्तमान में वसंत कंटेनर में नहीं है और इसे आसानी से स्थानांतरित नहीं किया जा सका। मैं घोषणात्मक लेनदेन का उपयोग करना पसंद करूंगा जैसे कि मैं कर सकता था। – ColinD

संबंधित मुद्दे