caching - MyBatis-Spring multi-datasource configuration cache issues -


mybatis-3.1.0, स्प्रिंग-3.1.1.RELEASE और mybatis-spring-1.1.0 का उपयोग करते हुए, हम हैं बहु-डेटा स्रोत कॉन्फ़िगरेशन में कुछ गंदे कैश समस्याओं का सामना करना पड़ता है।

सुरक्षा कारणों से, हमारे पास एक ही डाटाबेस और स्कीमा की ओर इशारा करते हुए अलग-अलग डेटा स्रोत हैं, प्रत्येक कूटलेखन का उपयोग कर प्रत्येक डेटा स्रोत लक्ष्य डीबी प्रयोक्ता का चयन करने के लिए केवल चयनित अनुमतियों का उपयोग करना है, दूसरे उपयोगकर्ता डाइल / अपडेट / डिलीट करने के लिए अनुमतियों को हटाने / डीएमएल ऑपरेशन करने आदि के साथ।

ऐसा करने के लिए, हमने तीन अलग-अलग कॉन्फ़िगर किए हैं SqlSessionFactoryBeans, प्रत्येक डेटा स्रोत के लिए एक। और समस्या यहां आती है: जब "डीएमएल" सत्र का उपयोग करते हुए एक सम्मिलित संचालन किया जाता है, तो "चयन" सत्रों का स्थानीय कैश फ्लश नहीं होता है। इसलिए, उदाहरण के लिए, हमें उपयोगकर्ता सूची में नए बनाए गए उपयोगकर्ता नहीं दिखाई देते हैं।

तो मेरा सवाल है: क्या एक ही समय में सभी तीन डेटा स्रोतों से जुड़े एक एकल एसक्यूएलएसिशनफिचरबीन को कॉन्फ़िगर करने का हमारे पास कोई तरीका है? < / P>

अपडेट:

कुछ और डीबगिंग के बाद, ऐसा लगता है कि मुख्य समस्या वास्तव में लेनदेन प्रबंधन से संबंधित है साइट में कुछ कार्रवाइयों में कई संचालन शामिल हैं, और इन कार्यों को विभिन्न डेटा स्रोतों के माध्यम से किया जाता है। ऐसा लगता है कि हम लेनदेन प्रबंधक को सही ढंग से कॉन्फ़िगर नहीं कर रहे हैं, और उन एक या अधिक कार्रवाइयों को कमिट से बाहर रखा गया है कई प्रयासों के बाद, कनेक्शन समाप्त होने के बाद, डेटाबेस के संचालन पूरी तरह से गड़बड़ हो जाते हैं।

तो, अब सवाल यह है कि सभी शामिल आंकड़ों को संभालने के लिए एक एकल लेनदेन प्रबंधक को कैसे कॉन्फ़िगर किया जाए?

दिए गए sqlSessionFactory से केवल एक डेटा स्रोत संबद्ध किया जा सकता है लेकिन यह मुख्य समस्या नहीं है मुख्य समस्या यह है कि स्थानीय कैश मेबेटिस सत्र के साथ है इसलिए जब आप कहते हैं कि दो अलग-अलग सत्रों में आपके पास दो अलग-अलग स्थानीय कैश होंगे - एक प्रति सत्र और एक sqlSessionFactory होने में मदद नहीं करेगा।

विकल्प जो आपको शायद विचार करना चाहिए वह अपने पढ़ने-योग्य सत्रों के लिए स्थानीय कचेस्कोप = STATEMENT सेट कर रहा है। इस मामले में यह निष्पादित क्वेरी के बाद परिणाम कैश नहीं करेगा। कैशिंग का उपयोग करने के लिए अभी भी कुछ वैश्विक स्तर पर कॉन्फ़िगर किया गया कैश के लिए कस्टम एडाप्टर का उपयोग करके दूसरे स्तर कैश कॉन्फ़िगर करें या जो वैश्विक कैश का उपयोग करता है उदा। ehcache।

Comments

Popular posts from this blog

c# - Textbox not clickable but editable -

php - how to change mysql_result($res, 0, "url"); to mysqli -

Matlab transpose a table vector -