DTO और DAO अवधारणाएँ और MVC [बंद]


133

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

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

यहाँ मैं किस बारे में बात कर रहा हूँ

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


@RomanC के पास एक डेटाबेस टेबल है, जो Event (EventId, name, date.etc) रखती है, इसलिए DTO और MVC, एक ही या अलग हैं?
हुडी

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

जावा कक्षाओं में @RomanC माफ करना, DTO / DAO संरचना का उपयोग करना या MVC का उपयोग करना चाहिए? क्या अंतर है
हुडी

पढ़ा यह और है कि अंतर की जांच
रोमन सी

क्या आपने दूसरे डिफेंस में डेटाबेस के बारे में पढ़ा?
रोमन सी

जवाबों:


269

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

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

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

यहाँ एक उदाहरण है कि डीएओ और डीटीओ इंटरफेस कैसा दिखेगा:

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

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

MVCएक व्यापक पैटर्न है। DTO / DAO MVC पैटर्न में आपका मॉडल होगा।
यह आपको बताता है कि डेटा पुनर्प्राप्ति के लिए जिम्मेदार भाग ही नहीं, पूरे एप्लिकेशन को कैसे व्यवस्थित किया जाए।

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


2
संभवत: मैंने इस सवाल को गलत समझा।
पेट्र

4
मुझे यकीन नहीं है कि आप "अलग नियंत्रक" से क्या मतलब है। मेरे रीडिंग से, एमवीसी में नियंत्रक जितना संभव हो उतना पतला होना चाहिए और आपके मॉडल में आपके व्यावसायिक तर्क को समझाया जाना चाहिए।
पॉल कार्लटन

4
डीटीओ के इंटरफ़ेस ऑब्जेक्ट मॉडल का उपयोग करना एक भयानक अभ्यास है। शून्य बचत (पर्सेंटो व्यक्ति) शुद्ध कैंसर है।
बेन

3
जब हमें POJO जैसी क्लास की वस्तुएं चाहिए तो हमें DTO की आवश्यकता क्यों है? क्या वे दोनों समान हैं?
भार्गव

3
@ भार्गव डीटीओ का उपयोग एक इकाई से कई संस्थाओं (पीओजेओ) या सीमित संसाधनों के संयुक्त परिणामों को वापस करने के लिए किया जाता है।
theCoder
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.