2012-01-24 13 views
12

मेरे पास घटक है जो ग्राहक और ग्राहक पते (जेडीबीसी के माध्यम से) के लिए डेटाबेस को अद्यतन करने की आवश्यकता है। क्या ग्राहकदाओ से ग्राहक एड्रेस डीडीओ को कॉल करना उचित है? या एक अलग "ग्राहक डेटा प्रबंधक" घटक बनाएं जो उन्हें अलग से कॉल करता है?क्या डीएओ कॉल डीएओ कर सकता है?

+1

व्यापार परत में ऐसा करने से आपको क्या अवरुद्ध कर रहा है? – Andre

उत्तर

24

आप कर सकते हैं, लेकिन इसका मतलब यह नहीं है कि आपको करना चाहिए। इन मामलों में, मैं इस मामले में एक सेवा (CustomerService) का उपयोग करना पसंद करता हूं जिसमें एक विधि कॉल है जो डीएओ दोनों का उपयोग करता है। आप सेवा विधि के आसपास लेनदेन को परिभाषित कर सकते हैं, इसलिए यदि कोई कॉल विफल हो जाता है, तो वे दोनों वापस रोल करते हैं।

अन्य डीएओ को कॉल करने वाले डीएओ के साथ समस्या यह है कि आप सर्कुलर संदर्भों के साथ जल्दी से समाप्त हो जाएंगे। निर्भरता इंजेक्शन बहुत मुश्किल हो जाता है।

4

आप एक डीएओ को दूसरे से कॉल कर सकते हैं लेकिन ग्राहकदाओ में ग्राहक एड्रेस डीडीओ बनाने पर भी विचार कर सकते हैं (आखिरकार, यह ग्राहक के बारे में है और मुझे नहीं लगता कि आप ग्राहक के बिना ग्राहक पता रखना चाहते हैं)।

4

जाहिर है, आप इसे विभिन्न तरीकों से कर सकते हैं। लेकिन, इस सवाल का सही जवाब देने के लिए, आपको अपने मॉडल से शुरू करना चाहिए। मॉडल में, देखें कि पता एक इकाई है (अपनी आईडी के साथ कुछ और स्वतंत्र रूप से भी इस्तेमाल किया जाता है), या यह एक मूल्य प्रकार है (कुछ ऐसा जो केवल ग्राहक के संदर्भ में समझ में आता है। फिर, आपके पास दो मामले होंगे:

इस मामले में, पता अपने आप ही दाव है और ग्राहक अपने स्वयं के दाव न तो दाव एक दूसरे का उपयोग करना चाहिए है, तो वहाँ कुछ तर्क दो में हेरफेर करने की जरूरत है, तो है कि:।
  1. पता एक इकाई है। डेटा एक्सेस लेयर में नहीं, आपके आवेदन तर्क में होना चाहिए।

  2. पता ग्राहक के साथ एक मूल्य प्रकार है: इस मामले में, पते में इसका एक अलग डीएओ नहीं है वामो। इसे ग्राहक ग्राहक के हिस्से के रूप में सहेजा/बहाल किया जा रहा है।

निष्कर्ष: यदि सही ढंग से डिज़ाइन किया गया है, तो डीएओ एक-दूसरे (मानक स्थितियों के तहत) तक नहीं पहुंचते हैं।

+1

"यदि कुछ तर्क हैं जो दोनों को कुशल बनाने की आवश्यकता है, तो उसे आपके एप्लिकेशन तर्क में होना चाहिए, डेटा एक्सेस लेयर में नहीं।" - क्या होगा यदि इसे लेनदेन की आवश्यकता हो? (उदाहरण के लिए, मुझे यह सुनिश्चित करना होगा कि ग्राहक और पता दोनों हटा दिए गए हैं) – HEATH3N

+0

यह एक बहुत अच्छा सवाल है! मुझे लगता है कि, उस परिदृश्य में, ग्राहक के साथ जुड़े मूल्य प्रकार के रूप में पता होना समझ में आता है। यह ग्राहक के साथ पते को एक साथ करने में मदद करता है, उदा। दोनों का विलोपन। –

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