हाइबरनेट की मेरी समझ यह है कि वस्तुओं को डीबी से लोड किया जाता है, उन्हें सत्र में जोड़ा जाता है। विभिन्न बिंदुओं पर, आपकी कॉन्फ़िगरेशन के आधार पर, सत्र फ़्लश हो जाता है। इस बिंदु पर, संशोधित वस्तुओं को डेटाबेस में लिखा जाता है।जब हाइबरनेट एक सत्र को फहराता है, तो यह कैसे तय करता है कि सत्र में कौन सी वस्तुएं गंदे हैं?
हाइबरनेट कैसे तय करता है कि कौन सी वस्तुएं 'गंदे' हैं और उन्हें लिखे जाने की आवश्यकता है?
फ़ील्ड में हाइबरनेट इंटरसेप्ट असाइनमेंट द्वारा उत्पन्न प्रॉक्सी करें, और ऑब्जेक्ट को सत्र में गंदे सूची में जोड़ें?
या हाइबरनेट सत्र में प्रत्येक ऑब्जेक्ट को देखता है और वस्तुओं की मूल स्थिति के साथ इसकी तुलना करता है?
या कुछ पूरी तरह से अलग है?
कृपया, बेहतर समझाएं: यदि गंदा ध्वज उन वस्तुओं की संख्या को कम नहीं करता है जिन्हें गंदे-जांच की आवश्यकता है, तो इसकी उपयोगिता क्या है? स्रोत में फ़र्टरमोर मैं दो अलग गंदे झंडे देखता हूं: एक सारफिल्ल्डइंटरसेप्टर में है और EntityEntry.requiresDirtyCheck() द्वारा चेक किया गया है, दूसरा एक सार तत्वों में बदलाव है और टिप्पणी की गई है "संग्रह उनके सार्वजनिक इंटरफ़ेस के माध्यम से किए गए परिवर्तनों का पता लगाते हैं और खुद को प्रदर्शन के रूप में गंदे के रूप में चिह्नित करते हैं अनुकूलन "(मुझे नहीं पता कि यह कोड में कहां चेक किया गया है)। – Pino
@ मैट क्वाइल, मुझे गंदे झंडे नहीं मिल रहे थे जिनके बारे में आप बात कर रहे हैं, केवल वही है जिसका उपयोग केवल तब किया जा सकता है जब बिल्डटाइम बाइटकोड उपकरण का उपयोग किया जाता है। –