मैं जेपीए सीख रहा हूँ और एक सवाल है:जब हमें एक से अधिक EntityManager की आवश्यकता होती है?
जो स्थितियों में हम एक से अधिक हमारे आवेदन में एक EntityManager
की ज़रूरत है?
जब हमारे आवेदन एक मल्टी-थ्रेडेड आवेदन और एक से अधिक धागा है, क्योंकि
EntityManager
थ्रेड-सुरक्षित नहीं है जेपीए लेन-देन की जरूरत है और हम की जरूरत है:दो स्थितियों है कि मैं के बारे में पता कर रहा हूँ इस प्रकार हैं एक
EntityManager
प्रति धागा।जब धागे के किसी भी एकाधिक समवर्ती लेनदेन की जरूरत है, हम चाहते हैं कि धागा में एक से अधिक
EntityManager
जरूरतEntityManager
औरEntityTransaction
के बीच एक-से-एक संबंध न होने के कारण।
Q1। क्या हमें कोई अन्य स्थितियां हैं जब हमें एक से अधिक EntityManager
की आवश्यकता है?
प्रश्न 2। मेरी समझ तक, प्रति व्यक्ति इकाई केवल EntityManagerFactory
होना चाहिए। क्या मैं सही हूँ? यदि नहीं, तो उन स्थितियों में क्या हैं जब हमें प्रति दृढ़ता इकाई एकाधिक EntityManagerFactory
की आवश्यकता होती है?
Q1 के लिए: मुझे लगता है कि एक _Entity Manager_ वस्तु कम से कम भूमि के ऊपर होना चाहिए, लेकिन मैं अभी भी पूछने के लिए कितना भूमि के ऊपर :) वाह, यह diff धागे कि एक दूसरे पर निर्भर करता है और अधिक जटिल है खुजली कर रहा हूँ। तो क्या यह कहना सुरक्षित है कि आपके पास प्रति थ्रेड 1 ईएम होना चाहिए? फिर आप सुनिश्चित करते हैं कि आप किसी भी अपवाद को पकड़ लें क्योंकि आपके पास एक ही टेबल का उपयोग करके एकाधिक धागे हैं, है ना? – thirdy
हाँ चूंकि ईएम थ्रेड सुरक्षित नहीं है, अगर मैं इसके चारों ओर एक रैपर बना देता हूं और इसमें रैपर में 'सिंक्रनाइज़' सेव/अपडेट विधियों को शामिल किया जाता है, जो आंतरिक रूप से ईएम को सहेज/अपडेट कहते हैं, तो कई धागे में इसका उपयोग किया जा सकता है। मैं भी ईएम को साफ़/बंद नहीं करता? मुझे लगता है कि एक साथ पढ़ने और लिखने के लिए अभी भी समस्याएं हो सकती हैं। क्या आप कृपया मुझे इस पर अपनी टिप्पणियां बता सकते हैं? – bluelurker