मेरे स्प्रिंग एमवीसी एप्लिकेशन में मैं सेवा परत में डोमेन मॉडल को समाहित करने के लिए प्रस्तुति परत में डीटीओ का उपयोग कर रहा हूं। डीटीओ का इस्तेमाल स्प्रिंग फॉर्म बैकिंग ऑब्जेक्ट्स के रूप में किया जा रहा है।स्प्रिंग एमवीसी: क्या सेवा परत ऑपरेशन विशिष्ट डीटीओ वापस करनी चाहिए?
इसलिए मेरी सेवाओं कुछ इस तरह दिखाई:
userService.storeUser(NewUserRequestDTO req);
सेवा परत डीटीओ अनुवाद करेगा - डोमेन वस्तु> और काम के बाकी है।
अब मेरी समस्या यह है कि जब मैं एक अद्यतन या डिस्प्ले कहने के लिए सेवा से डीटीओ पुनर्प्राप्त करना चाहता हूं तो मुझे ऐसा करने का बेहतर तरीका नहीं दिख रहा है, फिर लुकअप के लिए कई तरीके हैं जो अलग-अलग लौटते हैं डीटीओ की तरह ...
EditUserRequestDTO userService.loadUserForEdit(int id);
DisplayUserDTO userService.loadUserForDisplay(int id);
लेकिन कुछ इस दृष्टिकोण के बारे में सही नहीं लगता है। शायद सेवा को EditUserRequestDTO जैसी चीज़ों को वापस नहीं करना चाहिए और नियंत्रक को समर्पित फॉर्म ऑब्जेक्ट से अनुरोध डीटीओ को इकट्ठा करने के लिए ज़िम्मेदार होना चाहिए और इसके विपरीत।
कारण अलग-अलग डीटीओ का कारण यह है कि DisplayUserDTO को केवल पढ़ने के लिए मजबूर किया जाता है और उपयोगकर्ता के कई गुण भी हैं जो डीबी (जैसे शहर और राज्य) में लुकअप टेबल से इकाइयां हैं, इसलिए DisplayUserDTO के पास होगा गुणों का स्ट्रिंग विवरण जबकि EditUserRequestDTO में आईडी होगी जो फ़ॉर्म में चयनित ड्रॉप डाउन सूचियों को वापस लाएगी।
आपको क्या लगता है?
धन्यवाद
उत्तर के लिए धन्यवाद। यदि आप एक संपादन ऑपरेशन के लिए डोमेन ऑब्जेक्ट का उपयोग करते हैं तो क्या आप एक नए ऑपरेशन और अन्य सभी चीज़ों के लिए डोमेन ऑब्जेक्ट का भी उपयोग करते हैं, केवल संपादन के लिए क्यों? मेरे मामले में मैं एक एनीमिक डोमेन ऑब्जेक्ट से फंस गया हूं, इसके बारे में कुछ भी नहीं कर सकता। डीटीओ का कारण यह है कि मेरी डोमेन ऑब्जेक्ट्स कई रिश्ते और गुणों के साथ जटिल हैं जिन्हें मुझे अपने विचारों की आवश्यकता नहीं है। – arrages
ऊपर मेरी टिप्पणियां देखें ... – GMK
जीएमके धन्यवाद, कारण मैं ऐसा करने पर सोच रहा था क्योंकि यह सिस्टम पर हल्का नहीं है। मुझे लगता है कि मैं जो करना चाहता हूं उसके लिए एक वैध कारण है। यह सच है कि मुझे डोमेन ऑब्जेक्ट से जो कुछ भी चाहिए, उसका उपयोग करने की ज़रूरत नहीं है, लेकिन ऑब्जेक्ट का उपयोग करने के लिए मुझे जो कुछ चाहिए वह प्राप्त करने में मुश्किल हो सकती है, एक सुरक्षा चिंता भी है क्योंकि दृश्य के पास उन क्षेत्रों तक पहुंच होगी जो इसे नहीं करना चाहिए ऑब्जेक्ट को बंद करना और लॉक करना शायद उतना ही परेशानी है। – arrages