2009-01-29 18 views
6

मेरे पास एक परियोजना है जो वसंत का उपयोग कर रही है और दो दर्जन डीएओ और संबंधित डीटीओ में टूट गई है। मैं जेडीबीसी टेम्पलेट का उपयोग कर रहा हूं, लेकिन बहुत कुछ नहीं, क्योंकि यह बिल्कुल अमूर्तता का स्तर है, मैं खुश हूं।वसंत में आलसी लोडिंग डीटीओ फ़ील्ड

मैं वर्तमान में अपने डीटीओ पर आलसी लोडिंग कर रहा हूं ताकि वे अपने गेटर्स में कुछ बालों वाले कोड डाल सकें।

बेसिक बॉयलरप्लेट तर्क है: 1. यदि फ़ील्ड रिक्त वापसी अपने मूल्य और बाहर निकलने 2. संपर्क उचित डीएओ और लाने प्रासंगिक DTOs 3. स्टोर उन्हें अगली बार जब तक नहीं है।

यह ठीक काम करता है सिवाय इसके कि मेरे कम डीटीओ डीएओ के पूरे समूह के साथ मिलकर हैं और पीओजेओ नहीं हैं।

अगर मैं डीएओ में तर्क डालता हूं तो एक और कोड गंध दिखाई देता है क्योंकि यह सीआरयूडी दोनों को अपने डीटीओ और आलसी लोडिंग के लिए संभालने वाला होगा, और जैसा कि मैं समझता हूं कि ऑब्जेक्ट्स की एक ज़िम्मेदारी होनी चाहिए।

मुझे उम्मीद है कि एक अपेक्षाकृत सरल वसंत दृष्टिकोण है जिसका उपयोग मैं डीएओ और डीटीओ के बीच एक आलसी लोडर ऑब्जेक्ट को इंजेक्ट करने के लिए कर सकता हूं, लेकिन कोई अन्य समाधान मेरे लिए काम करेगा।

कोई विचार?

उत्तर

4

डीएओ के आस-पास डीएओ को लपेटना आसान है ... यह इस बात पर निर्भर करता है कि आप कितने मॉडल को भरना चाहते हैं। डीटीओ का उपयोग आम तौर पर दो या अधिक अलग डेटाबेस/दाओ कॉल के रूप में उनके साथ कई लोगों को लाने के लिए नहीं किया जाता है। उस स्थिति में आप वास्तव में एक ओआरएम चाहते हैं। चूंकि आप दाओ के उत्तर की तलाश में हैं ......

आपको एक एकल डीटीओ देने के लिए डीएओ को एक साथ जोड़ने से रोकने के लिए कुछ भी नहीं है। डीएओ से जुड़े डीटीओ को आसान बनाना आसान है। यह वास्तव में एक सेवा परत नहीं है, यह सिर्फ डीएओ के ब्लॉक बना रहा है। तो आपके पास पर्सनडाओ और एक टेलीफोन नम्बरडाओ हो सकता है। एक व्यक्ति के पास एक और टेलीफोन नंबर हो सकता है, इसलिए आपके पास पर्सनोडेलडाओ भी हो सकता है, जो इसे काम करने के लिए हुड के तहत पर्सडाडा और टेलीफोन नम्बरडाओ का उपयोग करता है।

वैकल्पिक रूप से, पूरी समस्या से बचें और डीटीओ स्तर पर व्यक्ति और टेलीफोन नंबर के बीच 1-एन को मानचित्र करने का प्रयास न करें। बस अपने यूआई को सही डीएओ के लिए सही कॉल करें। डीटीओ का उपयोग करते समय मुझे वास्तव में यह बेहतर लगता है।

+0

मुझे यह जवाब पसंद है (+1) व्यक्ति की स्पष्टता खोना शर्म की बात है .getTelephoneNumbers() –

3

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

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