2011-11-08 17 views
9

यदि आप डीबी से किसी इकाई को लोड करते हैं और इसे किसी भी तरह संशोधित करते हैं, तो एसक्यूएल अपडेट को करने की आवश्यकता है या नहीं, यह निर्धारित करने के लिए इकाई के वर्तमान स्थिति की तुलना करने के लिए इकाई के मौजूदा स्थिति की तुलना करने के लिए बराबर/हैशकोड का उपयोग हाइबरनेट करेगा?कैसे हाइबरनेट बराबर() और हैशकोड() का उपयोग करता है?

यदि यह ऐसा कंप्रेशन करता है, तो मेरे पास एक और सवाल है: यदि बराबर सत्य वापस आ जाएंगे, तो यह सोचने में हाइबरनेट होगा कि इकाई नहीं बदली है या इसका डिफ़ॉल्ट उपयोग (सुनिश्चित करने के लिए) का उपयोग करने का प्रयास नहीं किया गया है?

उत्तर

9

कृपया जेबॉस समुदाय वेबसाइट से Equals and HashCode देखें। वहां से:

इस समस्या को हम अनुशंसा करते बराबर लागू करने के लिए ("अर्ध" अनोखा अपने लगातार वर्ग के विशेषताओं का उपयोग करते हुए) से बचने के लिए (और hashCode())। असल में आपको अपने डेटाबेस पहचानकर्ता के बारे में सोचना चाहिए क्योंकि व्यवसाय का अर्थ बिल्कुल नहीं है (याद रखें, सरोगेट पहचानकर्ता विशेषताएँ और स्वचालित रूप से जेनरेट किए गए वैल्यू की सिफारिश की जाती है)। डेटाबेस पहचानकर्ता संपत्ति केवल एक ऑब्जेक्ट पहचानकर्ता होना चाहिए, और मूल रूप से केवल हाइबरनेट द्वारा उपयोग किया जाना चाहिए। बेशक, आप डेटाबेस पहचानकर्ता को सुविधाजनक रीड-ओनली हैंडल के रूप में भी उपयोग कर सकते हैं, उदा। वेब अनुप्रयोगों में लिंक बनाने के लिए।

दूसरे शब्दों में, हाइबरनेट पहचान के लिए बराबर और हैशकोड का उपयोग करता है, यह देखने के लिए कि कोई वस्तु संशोधित नहीं की गई है या नहीं। यह इसके लिए विशेषता तुलना द्वारा विशेषता का उपयोग करता है।

+1

हाइबरनेट का उपयोग इस उद्धरण में और पृष्ठ पर बराबर() और हैशकोड() का उपयोग नहीं करता है – Lu55

3

एक हाइबरनेट विशेषज्ञ नहीं है, लेकिन आपको मैन्युअल प्रबुद्धता के this अनुभाग मिल सकते हैं।

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

  • कोई संबंधित समस्या नहीं^_^