2012-04-18 18 views
7

मैं वर्तमान में एक संग्रह बना रहा हूं और सोच रहा था कि किसी इकाई के डिलीट ऑपरेशन के लिए "सर्वोत्तम अभ्यास" क्या है। नीचे दिए गए विकल्पों में कार इकाई के लिए कुंजी बनाते हैं और मॉडल बनाते हैं।क्या किसी रिपॉजिटरी को किसी आईडी या इकाई में गुजरकर किसी इकाई को हटाया/हटाया जाना चाहिए

विकल्प 1:

deleteCar(Car car) 

विकल्प 2:

deleteCar(String make, String model) 

विकल्प 3:

deleteCar(CarKey carKey) 

पहले तो मुझे लगा कि विकल्प 1, लेकिन अभ्यास में विकल्प 2 अधिक आकर्षक लग रहा है (मैं ऑब्जेक्ट प्राप्त नहीं करना चाहता हूं जब मेरे पास केवल आईडी है ताकि मैं इसे हटाएं विधि में पास कर सकूं)। मैंने विकल्प 3 रखा क्योंकि मैंने इस तरह की चीजें देखी हैं लेकिन यह मेरे लिए सही नहीं लगती है क्योंकि कारकी वास्तव में एक डोमेन ऑब्जेक्ट नहीं है।

विचार?

+2

बस कहना चाहता था कि विकल्प 2 अलग-अलग कार को हटा सकता है क्योंकि इकाई पहचान द्वारा परिभाषित नहीं है। –

+0

सच है। मैं कल्पना कर रहा था कि इससे कोई फर्क नहीं पड़ता क्योंकि जिस तरह से मैं इसके बारे में सोच रहा था, यह प्राथमिक कुंजी थी। लेकिन हाँ अगर यह नहीं था तो मैं इसे देख सकता हूं। – testing123

उत्तर

4

विकल्प 3.

यह कोई फर्क नहीं पड़ता कि CarKey एक डोमेन वस्तु नहीं है (यह एक मूल्य वस्तु हालांकि हो सकता है), एक आईडी कि सभी कार्रवाई होने के लिए के लिए आप की जरूरत है। ऐसा इसलिए है क्योंकि, यदि कार एक एआर है, तो भंडार को पता होना चाहिए कि इसे कैसे प्राप्त किया जाए और कैसे हटाएं।

3

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