2012-06-28 15 views
10

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

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

उत्तर

19

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


संपादित करें (आपकी टिप्पणी के आधार पर): यह सॉफ़्टवेयर आर्किटेक्चर पर निर्भर करता है। उदाहरण के लिए, मैं एक एसओए परियोजना पर काम कर रहा हूं और हम सेवा परत और प्रस्तुति परत के लिए डीटीओ का उपयोग करते हैं। अधिक गहरा अंदर, हम सेवाओं के अंदर डेटाबेस संचार को संभालने के लिए डीटीओ का भी उपयोग करते हैं, हम डीबी के साथ संवाद करने के लिए केवल एसपी का उपयोग करते हैं, इसलिए कोई हाइबरनेट या कोई अन्य ओआरएम उपकरण वहां काम नहीं कर सकता है, हम Spring DAO का उपयोग कर सकते हैं और वह ढांचा डीटीओ का भी उपयोग करता है। आजकल आप कई अनुप्रयोगों में बहुत सारे डीटीओ पैटर्न पा सकते हैं।

और जानकारी है कि इस प्रश्न के लिए बहुत अच्छा होगा:

संपादित करें 2: जानकारी का एक अन्य स्रोत है कि डीटीओ के डिजाइन का उपयोग कर के लिए मुख्य कारण समझा जाएगा, Martin Fowler

निष्कर्ष से समझाया: डीटीओ के नहीं एक हैं विरोधी पैटर्न। डीटीओ का उपयोग तभी किया जाता है जब आपको एक सबसिस्टम से दूसरे डेटा में डेटा पास करने की आवश्यकता होती है और उनके पास संवाद करने के लिए डिफ़ॉल्ट या स्टैंडर तरीका नहीं होता है।

+0

हां ऐसे परिदृश्य में मैं डीटीओ के उपयोग को समझता हूं। आप एक डीटीओ में परिणाम भेज रहे हैं। लेकिन आंतरिक अनुप्रयोग उपयोग के लिए डीटीओ का उपयोग अधिक नहीं है? – Thihara

+0

@ तिहारा उत्तर आपकी टिप्पणी के आधार पर संपादित –

+0

आपके पहले के अनुसार यह एक विरोधी पैटर्न है जो इस तथ्य को प्राप्त करने के लिए उपयोग किया जाता है कि इकाई सेम धारावाहिक नहीं थे। एक ओआरएम के साथ कि प्राथमिक समस्या मौजूद नहीं है। – Thihara

1

एक पैटर्न शुद्ध डिजाइन है। पैटर्न का कोई "बहिष्करण" नहीं है, लेकिन समय के साथ कम उपयोग (या अधिक उपयोग)।
व्यक्तिगत रूप से, मुझे नहीं लगता कि डीटीओ का उपयोग क्यों न करें।
उदाहरण के लिए - oVirt ओपन सोर्स प्रोजेक्ट में हमारे पास वर्चुअलाइजेशन के डोमेन में व्यावसायिक तर्क संस्थाओं का प्रतिनिधित्व करने वाली संस्थाएं हैं।
इन इकाइयों को या तो हाइबरनेट एनोटेशन द्वारा एनोटेट किया जाना चाहिए (वास्तव में, वे आज हैं, क्योंकि हमने हाइबरनेट पीओसी पर काम करना शुरू किया है) और डीटीओ के रूप में कार्य करते हैं, और फिर एनोटेशन ऑब्जेक्ट्स से साफ हो जाते हैं जो उन्हें मैप करेंगे (मान लें, dozer का उपयोग करना ढांचे) और क्लाइंट
(मुझे अनावश्यक एनोटेशन के साथ क्लाइंट साइड कोड पर पसंद नहीं है) द्वारा उपयोग किया जाता है, या संस्थाओं को क्लाइंट ऑब्जेक्ट्स (वैल्यू ऑब्जेक्ट्स) के रूप में क्लाइंट को पास किया जाना चाहिए और हमारे पास अन्य वर्गों के रूप में कार्य करना चाहिए डीटीओ इकाइयां

उपर्युक्त दृष्टिकोण में शून्य यह है कि आपके पास 2 समांतर वर्ग आरेख हो सकते हैं - एक डीटीओ के लिए और एक मूल्य वस्तुओं (जो ग्राहकों द्वारा उपयोग किया जाता है) के लिए - लेकिन, डिजाइन में कई मामलों में, एक व्यापार- बंद।
आपको फायदे और नुकसान समझना चाहिए और चुनना चाहिए कि आपके लिए सबसे अच्छा क्या है (हमारे मामले में, चूंकि ग्राहक पक्ष जीडब्ल्यूटी है, इसलिए हमारे लिए दो वर्ग पदानुक्रमों को अलग करने के लिए जाना आसान होगा, जो कि डीटीओ/सर्वर पक्ष है और अधिक सर्वर पक्ष केवल एनोटेशन के साथ भी एनोटेट किया जा सकता है, और दूसरा जीडब्ल्यूटी क्लाइंट कोड को भेजा जा सकता है)।

+0

फ्रंट एंड जीडब्ल्यूटी नहीं है जहां मैंने इसका निहित किया है? यह जेएसपी के बहुत सारे जावास्क्रिप्ट और jQuery के साथ है। हां zaske जो मैं पूछ रहा हूं वह यह है कि क्या उनका उपयोग करने में कोई बिंदु है क्योंकि आधुनिक दिन ऑब्जेक्ट मॉडल डेटा धारण कर रहे हैं। – Thihara

2

यह जावा ईई में एक बहुत ही उपयोगी पैटर्न है।

मैं ईजेबी बीन्स से यूआई परत में संबंधित इकाई वस्तुओं को स्थानांतरित करने के लिए एक डीटीओ का उपयोग करता हूं। इकाई वस्तुओं को डीबी से एक लेनदेन (TransactionAttributeType.REQUIRED देखें) में प्राप्त किया जाता है और डीटीओ ऑब्जेक्ट में संग्रहीत किया जाता है। यूटी परत में डीटीओ खपत है।

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

  • कोई संबंधित समस्या नहीं^_^