6

अगर मैं फोनएक जेपीए एप्लिकेशन में कनेक्शन पूल में कनेक्शन कब लौटाया जाता है?

entityManager.close(); 

एक कनेक्शन केवल एक जेपीए आवेदन में कनेक्शन पूल में लौट आए है?

क्या इसके जीवन चक्र के दौरान इकाई प्रबंधक का समर्थन करने वाला कनेक्शन बदल सकता है? अग्रिम Mojoo

+2

मुझे हाइबरनेट के साथ कनेक्शन रिलीजिंग रणनीतियों का यह विवरण मिला: http://docs.jboss.org/hibernate/stable/core.old/reference/en/html/transactions-connection-release.html – GlenPeterson

उत्तर

4

में

धन्यवाद जेपीए कल्पना ऐसी बातें और ऊपर कार्यान्वयन करने के लिए अपने कनेक्शन का प्रबंधन करने को परिभाषित नहीं करता। जब कोई लेनदेन सक्रिय होता है तो आप यह मानने के लिए सुरक्षित होंगे कि स्पष्ट कारणों से, प्रतिबद्ध होने तक कनेक्शन समान है। एक बार टीएक्सएन समाप्त हो जाने पर इसे वापस सौंप दिया जा सकता है, या इसे कार्यान्वयन के आधार पर आयोजित किया जा सकता है (और आप अपना उल्लेख नहीं करते हैं)

2

यह जेपीए कार्यान्वयन और कॉन्फ़िगरेशन पर निर्भर करता है।

डिफ़ॉल्ट रूप से एक्लिप्ससेंक में एक कनेक्शन केवल सक्रिय (गंदे) लेनदेन की अवधि के लिए आयोजित किया जाता है। यानी पहले संशोधन या लॉक से, प्रतिबद्ध या रोलबैक तक। गैर-लेनदेन संबंधी प्रश्नों के लिए मांग पर कनेक्शन प्राप्त किया जाता है और क्वेरी निष्पादन के बाद लौटा दिया जाता है। यह कनेक्शन पूलिंग के अधिकतम उपयोग के लिए अनुमति देता है। तो, सामान्य रूप से em.close() कुछ भी नहीं करता है।

आप इसे "eclipselink.jdbc.exclusive-connection.mode" दृढ़ता इकाई संपत्ति का उपयोग करके कॉन्फ़िगर कर सकते हैं। "हमेशा" EntityManager के जीवन के लिए एक कनेक्शन रखेंगे।

आप लेन-देन के लिए अलग-अलग कनेक्शन पूल का भी उपयोग कर सकते हैं, बनाम गैर-लेनदेन वाले पाठ। यह जेटीए के साथ उपयोगी है, क्योंकि आप पढ़ने के लिए गैर-जेटीए डेटासोर्स का उपयोग कर सकते हैं।