मुझे पता है कि यह शायद एक पुराना सवाल है, लेकिन बेहतर अभ्यास क्या है? अपने आवेदन की सभी परतों में एक डोमेन मॉडल ऑब्जेक्ट का उपयोग करना, और जेएसपी पर सीधे बाध्यकारी मान भी (मैं जेएसएफ का उपयोग कर रहा हूं)। या डीएओ या सेवा परत में एक डोमेन मॉडल ऑब्जेक्ट को डीटीओ में परिवर्तित करें और प्रस्तुति परत में हल्के डीटीओ भेजें।डीटीओ या डोमेन मॉडल ऑब्जेक्ट?
मुझे बताया गया है कि डीटीओ का उपयोग करने का कोई मतलब नहीं है क्योंकि डेटाबेस में परिवर्तन के परिणामस्वरूप आपके सभी डीटीओ में परिवर्तन होगा जबकि हर जगह मॉडल ऑब्जेक्ट्स का उपयोग करने से प्रभावित मॉडल ऑब्जेक्ट में बदलाव की आवश्यकता होगी। हालांकि, उपयोग की आसानी और डीटीओ की हल्की प्रकृति उस से अधिक है।
मैं नोट करना चाहिए कि मेरे ऐप हाइबरनेट मॉडल वस्तुओं का उपयोग करता है और अपने स्वयं के कस्टम बनाया मॉडल वस्तुओं (किसी भी डीबी सत्र, हमेशा अलग करने के लिए बाध्य नहीं अर्थ) का उपयोग करता है। क्या उपरोक्त परिदृश्यों में से कोई भी सख्त मॉडल ऑब्जेक्ट पैटर्न के लिए अधिक फायदेमंद है? आलसी प्रारंभिक अपवाद जैसे चीजों के संबंध में हाइबरनेट का उपयोग करना एक विशाल पिटा रहा है।
मैं चर्चा को आगे बढ़ाने की उम्मीद में इस सवाल (यकीन नहीं अगर मैं यह सही कर रहा हूँ) संपादन कर रहा हूँ:
समस्या मैं मॉडल वस्तुओं के साथ है कि वे सब पर लचीला नहीं हैं। नीचे दी गई एक टिप्पणी में कहा गया है कि एप्लिकेशन को डिज़ाइन किया जाना चाहिए ताकि मॉडल ऑब्जेक्ट्स को सभी परतों में उपयोग किया जा सके। क्यूं कर? यदि कोई उपयोगकर्ता हास्यास्पद कार्यक्षमता का एक टुकड़ा चाहता है, तो क्या मुझे उन्हें बताना होगा, 'ठीक है कि मॉडल ऑब्जेक्ट्स के साथ काम नहीं करेगा'?
सादा और सरल जब मॉडल वस्तुओं से काम नहीं चलेगा, वहाँ अभी समय है। आपके पास हो सकता है:
public class Teacher {
List<Student> students;
[tons of other Teacher-related fields]
}
public class Student {
double gpa;
[tons of other Student-related fields]
}
लेकिन शायद आपको वह सारी जानकारी की आवश्यकता नहीं है। आपको सिर्फ शिक्षक के अंतिम नाम की आवश्यकता है, इस साल वे जो छात्र पढ़ाते हैं, और संयुक्त छात्रों के लिए औसत जीपीए की संख्या। आप उस मामले में क्या करेंगे? पूर्ण शिक्षक की जानकारी और छात्र संबंधों को पुनः प्राप्त करें और फिर आपके कोड को छात्रों की सूची पर गिनती मिलती है, फिर अंदर सभी जीपीए की कुल औसत गणना करता है? ऐसा लगता है कि 'स्ट्रिंग अंतिम नाम', 'int numStudents', और 'डबल संयुक्त जीपीए' के साथ एक डीटीओ बनाने की तुलना में अधिक प्रयास की तरह लगता है;
ऐसा लगता है कि मेरे मन इन पर किया गया है लग सकता है, लेकिन मैं अभी तक एक आवेदन जहां मॉडल वस्तुओं पूरी तरह से हर मामले में सफाई से इस्तेमाल किया जा सकता में काम करना है। साधारण वास्तविक दुनिया के अनुप्रयोगों के साथ नियमित वास्तविक दुनिया की मांग सिर्फ इस तरह से काम नहीं करती है।
हाँ मैं समझता हूं। यह वास्तव में ऐसा लगता है जैसे कभी-कभी यह आवश्यक जटिलता को जोड़ता है। अगर मेरे पास एक ऑब्जेक्ट है जो कहता है कि एक शिक्षक का प्रतिनिधित्व करता है और कई बार मुझे केवल हेडर जानकारी (नाम, पता) की आवश्यकता होती है, तो मुझे आधे-आबादी वाले डोमेन ऑब्जेक्ट को फ्रंट-एंड पर भेजना होगा। यह सिर्फ भ्रामक है और मेरे लिए सही नहीं लगता है। – sma
@ smayers81 - आप केवल अपने डोमेन ऑब्जेक्ट्स को आधे रास्ते क्यों पॉप्युलेट कर रहे हैं? यह एक अनावश्यक अनुकूलन की तरह लगता है (यदि आपने प्रोफाइल की समस्या नहीं ली है या अन्यथा समस्या की खोज की है)। यह आपकी समस्या की जड़ की तरह लगता है - आपके डोमेन ऑब्जेक्ट्स जैसे डीटीओ का इलाज करना। क्यों न केवल अपने पूर्ण हाइड्रेटेड डोमेन ऑब्जेक्ट्स को फ्रंट एंड पर दबाएं? यदि आपको पता चलता है कि आपके पास प्रदर्शन समस्या है, तो आपके पास डीटीओ के लिए एक मामला है (या कस्टम ऑब्जेक्ट्स को पूरी तरह से बाईपास करने के लिए और सीधे आपके फ्रेमवर्क द्वारा प्रदान किए जाने वाले रिकॉर्डसेट के साथ सीधे काम करने के लिए)। –
क्योंकि मैंने हमेशा महसूस किया है, अगर तार की जरूरत नहीं है तो तार पर उस डेटा को क्यों भेज दें। मुझे लगता है कि हाइबरनेट के आलसी लाने के विचार के पीछे यह पूरी प्रेरणा थी (मैं वहां गलत हो सकता था) – sma