2012-01-20 10 views
14

यह हाइबरनेट कॉन्फ़िगरेशन स्पष्ट रूप से नियंत्रित करना चाहिए कि पहले स्तर कैश में कितनी ऑब्जेक्ट कैश की जाती हैं। कारण समझने में काफी आसान कारण है, हम स्मृति से बाहर नहीं निकलना चाहते हैं।hibernate.jdbc.batch_size निर्दिष्ट करने का क्या मतलब है?

लेकिन कुछ मुझे भ्रमित कर रहा है। मैंने देखा है कि प्रत्येक कार्यान्वयन this website में एक स्पष्ट फ्लश और स्पष्ट है। कोई समस्या नहीं है, लेकिन फिर कॉन्फ़िगरेशन प्रॉपर्टी का क्या मतलब है?

नोट: मुझे लगता है कि किसी भी तरह हाइबरनेट कैश के आकार पर नज़र रखता है और यदि किसी निश्चित प्रकार की वस्तुओं की संख्या कैश आकार से बड़ी हो जाती है तो कैश को डीबी के साथ सिंक्रनाइज़ करें। पता नहीं है कि क्या धारणा गलत है ???

उत्तर

21

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

जेडीबीसी बैच अपडेट डेटाबेस में एक बैच में एकाधिक अपडेट क्वेरी भेजने की अनुमति देता है। यह नेटवर्क कॉल की संख्या को कम करता है। आप इसे 20 फ़ाइलों को व्यक्तिगत रूप से भेजने की बजाय 20 फ़ाइलों वाली एक असम्पीडित ज़िप अपलोड करने के रूप में देख सकते हैं।

भ्रम इस तथ्य से आता है कि आपके प्रश्न से जुड़े पृष्ठ में उल्लिखित बैच अपडेटों में जेडीबीसी बैच अपडेट के साथ कुछ लेना देना नहीं है। बैच अपडेट के साथ हाइबरनेट का क्या अर्थ है "बैच जॉब द्वारा किए गए अपडेट"। एक बैच नौकरी में आम तौर पर लेन-देन में सैकड़ों, हजारों या इससे भी अधिक इकाइयों के विशिष्ट व्यापारिक उपयोग-मामलों के लेन-देन होते हैं। यही कारण है कि हाइबरनेट मेमोरी से बाहर निकलने से बचने के लिए इस मामले में नियमित रूप से फ्लशिंग और समाशोधन की सिफारिश करता है।

+0

धन्यवाद जो इसे स्पष्ट करता है। किसी भी तरह से मैं सोच रहा था कि वे संबंधित थे लेकिन ये सभी अलग अनुकूलन हैं। –

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