2013-01-16 15 views
69

1) हम DTO और DAO का उपयोग क्यों करते हैं, और हमें उनका उपयोग कब करना चाहिए। मैं डेटा को सम्मिलित करने, संपादित करने, हटाने के साथ करने के लिए GUI जावा सॉफ़्टवेयर विकसित कर रहा हूं। लेकिन मैं DTO/DAO और Model, View, Controller (एमवीसी) संरचना के बीच अंतर करने के लिए संघर्ष कर रहा हूं? क्या वे समान हैं, जो जावा GUI के माध्यम से डेटाबेस के साथ बातचीत करते समय उपयोग करना बेहतर है।डीटीओ और डीएओ अवधारणाएं और एमवीसी

2) एक बात मैं वास्तव में उत्सुक हूं कि यह एक कक्षा में view और Controller रखने का एक अच्छा अभ्यास है या नहीं। अगर हम Netbeans के बारे में सोचते हैं, तो आप GUI फ़्रेम क्लास बना सकते हैं और फ्रेम पर JButton जैसे घटक जोड़ सकते हैं, बटन पर डबल क्लिक करने से आपको actionListener विधि (नियंत्रक) पर ले जाया जाएगा जो फ्रेम में दिखाई देता है, डेटा को प्रदर्शित किया जाना है उपयोगकर्ता (देखें)। तो वे एक ही कक्षा में हैं। क्या यह पूरी तरह अवधारणा के खिलाफ जा रहा है या नहीं?

<a href="http://www.youtube.com/watch?v=Iwwznm9XSME">Here is what Im talking about</a> 

एक कक्षा में देखने और नियंत्रक के लिए खराब अभ्यास?

+0

जहां आप डीटीओ का उपयोग करते हैं? –

+0

@RomanC में एक डेटाबेस तालिका है जिसमें ईवेंट (eventId, name, date.etc) है, इसलिए डीटीओ और एमवीसी, समान या अलग हैं? – Hoody

+0

डेटाबेस में आपके पास डीटीओ नहीं है लेकिन डेटाबेस ऑब्जेक्ट्स हैं। –

उत्तर

153

डीटीओ डेटा ट्रांसफर ऑब्जेक्ट का संक्षिप्त नाम है, इसलिए इसका उपयोग आपके एप्लिकेशन के वर्गों और मॉड्यूल के बीच डेटा को स्थानांतरित करने के लिए किया जाता है। डीटीओ में केवल आपके डेटा, गेटर्स, सेटर्स और कन्स्ट्रक्टर के लिए निजी फ़ील्ड होना चाहिए। ऐसी कक्षाओं में व्यावसायिक तर्क विधियों को जोड़ने की अनुशंसा नहीं की जाती है, लेकिन कुछ उपयोग विधियों को जोड़ना ठीक है।

डीएओ डेटा एक्सेस ऑब्जेक्ट का संक्षेप है, इसलिए इसे आपके डेटा संग्रहण (डेटाबेस, फ़ाइल-सिस्टम, जो कुछ भी) में डेटा को पुनर्प्राप्त करने, सहेजने और अपडेट करने के लिए तर्क को समाहित करना चाहिए।

interface PersonDTO { 
    String getName(); 
    void setName(String name); 
    //..... 
} 

interface PersonDAO { 
    PersonDTO findById(long id); 
    void save(PersonDTO person); 
    //..... 
} 

MVC एक व्यापक पैटर्न है: यहाँ एक उदाहरण डीएओ और डीटीओ इंटरफेस तरह दिखाई देंगे की तरह है। डीटीओ/डीएओ एमवीसी पैटर्न में आपका मॉडल होगा। यह आपको बताता है कि पूरे एप्लिकेशन को व्यवस्थित करने के लिए, न केवल डेटा पुनर्प्राप्ति के लिए जिम्मेदार हिस्सा।

दूसरे प्रश्न के लिए, यदि आपके पास एक छोटा सा एप्लीकेशन है तो यह पूरी तरह से ठीक है, हालांकि यदि आप एमवीसी पैटर्न का पालन करना चाहते हैं तो एक अलग नियंत्रक होना बेहतर होगा, जिसमें आपके फ्रेम के लिए व्यावसायिक तर्क शामिल होगा घटना नियंत्रकों से इस नियंत्रक को एक अलग वर्ग और प्रेषण संदेश। यह आपके व्यापार तर्क को दृश्य से अलग करेगा।

+0

पहला सवाल अंतर डीटीओ/डीएओ बनाम एमवीसी के अंतर के बारे में था, मुझे लगता है। – madth3

+0

शायद मैं इस सवाल को याद करता हूं। – Petr

+0

यदि मैं 'PersonDAO.save()' जैसी कुछ सक्षम/अक्षम करने के लिए ट्रिगर जोड़ना चाहता था, तो क्या मैं इसे सीधे 'save()' विधि में रखूंगा?साथ ही, डेटाबेस प्रदर्शन काउंटर के लिए, क्या मैं टाइमर सीधे 'सेव()' विधि में जोड़ूंगा? साथ ही, क्या पर्सन डीटीओ के अंदर पर्सडाडो रेफरी होना स्वीकार्य है? – BenR

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