मैं खंड 3.4.4 लॉक मोडJava Persistence API 2.0 Final Release विनिर्देश के माध्यम से स्कैन किया है और यह नहीं बताता है, जबकि मैं कुछ भी नहीं मिला विशिष्ट (कि इस डिफ़ॉल्ट है या ऐसा कुछ भी) एक फुटनोट है जो निम्नलिखित कहता है।
लॉक मोड प्रकार को लॉक मोड तर्कों के मान के रूप में निर्दिष्ट किया जा सकता है और एनोटेशन के लिए डिफ़ॉल्ट मान भी प्रदान करता है।
अनुभाग LockModeType
मूल्यों के प्रकार और उनके उपयोग के बारे में है और वर्णन करता है कि कौन सी विधियां इस तरह के तर्क और क्या नहीं हैं।
तो, के रूप में यह कहा LockModeType.NONE
एनोटेशन के लिए डिफ़ॉल्ट है (जेपीए, एनोटेशन छोड़ दिया और सही) मुझे लगता है कि जब आप EntityManager.find(Class, Object)
का उपयोग डिफ़ॉल्ट LockModeType
प्रयोग किया जाता है।
कुछ अन्य हैं, सूक्ष्म, इसे मजबूत करने के लिए संकेत। खंड 3.1.1 EntityManager इंटरफ़ेस।
खोज विधि (बशर्ते वह एक ताला किए बिना आमंत्रित या LockModeType.NONE साथ शुरू हो जाती है) और getReference विधि एक सौदे के संदर्भ में लागू होने की आवश्यकता नहीं है।
यह समझ में आता है। उदाहरण के लिए यदि आप MySQL का उपयोग अपने डेटाबेस के रूप में करते हैं और आपके डेटाबेस इंजन का विकल्प InnoDB है (डिफ़ॉल्ट रूप से) आपकी तालिका REPEATABLE READ
का उपयोग करेगी, यदि आप कुछ अन्य आरडीबीएमएस या अन्य डेटाबेस इंजन का उपयोग कर सकते हैं तो यह बदल सकता है।
अभी मुझे बिल्कुल यकीन नहीं है कि अलगाव स्तरों के पास जेपीए लॉक मोड (हालांकि ऐसा लगता है) के साथ कुछ भी करना है, लेकिन मेरा मुद्दा यह है कि विभिन्न डेटाबेस सिस्टम अलग-अलग हैं इसलिए जेपीए आपके लिए तय नहीं कर सकता कम से कम विनिर्देश के अनुसार) डिफ़ॉल्ट रूप से किस लॉक मोड का उपयोग करना है, इसलिए यदि आप इसे अन्यथा निर्देश नहीं देते हैं तो यह LockModeType.NONE
का उपयोग करेगा।
मुझे an article regarding isolation levels and lock modes भी मिला है, तो आप इसे पढ़ना चाहेंगे।
ओह, और अपने अंतिम प्रश्न का उत्तर देने के लिए।
यदि हम एक स्पष्ट लॉकिंग मोड को परिभाषित नहीं करते हैं, तो डेटाबेस अखंडता खो जा सकती है?
यह निर्भर करता है, लेकिन अगर आप समवर्ती लेनदेन है तो इस सवाल का जवाब शायद हाँ है।
इस रचनात्मक उत्तर और लिंक के लिए धन्यवाद। मैं फिर से पढ़ूंगा और LockModeType.NONE को समझने की कोशिश करूंगा और इसका क्या अर्थ है। तथ्य यह है कि मैं जेपीए के साथ नया हूं और मुझे यह नहीं पता कि सटीक अखंडता के साथ रखने के लिए मुझे किस इकाई (ies) को लॉक करना चाहिए। यह शायद उबाऊ है लेकिन मैं लेनदेन सिमुलेशन (थ्रेड.sleep()) के साथ सभी मोड का परीक्षण करूंगा। एक बार फिर धन्यवाद –