मैं @SPFloyd से भी सहमत हूं। लेकिन मैं कुछ और जोड़ना चाहता था।
ऐसी स्थितियां हैं जब किसी इकाई के पास अद्वितीय व्यावसायिक गुण नहीं होते हैं। उदाहरण के लिए, एक इकाई में केवल A
(पीके) और B
(एक व्यावसायिक संपत्ति) हो सकती है, लेकिन कई इकाइयों में B
मान होता है।
इस मामले में, equals()
और hashcode()
बनाना मुश्किल है। आप निश्चित रूप से उन्हें A
पर आधार नहीं बनाना चाहते हैं, क्योंकि आप एक ऐसे ऑब्जेक्ट की तुलना करने में सक्षम नहीं होंगे जो अभी तक जारी नहीं है। और तुम अकेले B
को उसका आधार नहीं कर सकते, क्योंकि तब कई वस्तुओं है कि विभिन्न अद्वितीय इकाइयों एक ही प्रतीत होता।
मैं इन स्थितियों में क्या करना एक Date created = new Date();
संपत्ति है। जब कोई इकाई बनाई जाती है, तो यह स्वचालित रूप से एक निर्मित टाइमस्टैम्प प्राप्त करता है। मेरी equals()
और hashcode()
में मैं B
और created
दोनों शामिल हैं। यह के रूप में वहाँ एक बहुत ही पतली संभावना है कि दो वस्तुओं एक ही समय (विशेष रूप से एक क्लस्टर समाधान में) पर निर्मित किया जा सकता है, लेकिन यह एक शुरुआत है, सही नहीं है।यदि आपको जरूरी है, तो एक यूआईडी या अन्य जेनरेट की गई व्यावसायिक संपत्ति जोड़ें जो डेटाबेस का पीके नहीं है।
'बराबर()' विधि में 'ए' को क्यों बाहर निकालें? –
एक व्यापार परिप्रेक्ष्य से, एक स्थिर इकाई और समान गुण वाले बी-सी के बराबर एक गैर-स्थिर इकाई बराबर होती है। व्यापार परिप्रेक्ष्य को डीबी आईडी जैसे कार्यान्वयन विवरणों की परवाह नहीं करनी चाहिए, जो केवल मॉडल के लिए प्रासंगिक है। –
धन्यवाद। मुझे लगता है कि मैं पीछे की ओर सोच रहा हूं (पहले कार्यान्वयन करना; व्यवसाय की भावना दूसरी)। आपके जवाब ने मुझे एहसास दिलाया। धन्यवाद। –