बस टेबल डेटा गेटवे (टीडीजी) कार्यान्वयन के बारे में बताएं: आप अलग टीडीजी कक्षा बनाते हैं जिसमें ठोस तालिका के साथ सीआरयूडी संचालन के लिए एसक्यूएल शामिल है। इसलिए, आपके मॉडल सीधे डेटासॉर (उदाहरण के लिए डेटाबेस) के साथ संवाद नहीं करते हैं, लेकिन उन सार तत्वों के माध्यम से - टीडीजी कक्षाएं। तो, यह एक और स्तर का अमूर्त बनाने के लिए एक दृष्टिकोण है और यह डाटाबेस के साथ संवाद करने के लिए सिर्फ एक रैपर है - डेटा प्राप्त करें और संशोधित करें। आईएमएचओ टीडीजी कक्षाओं में सदस्यों, केवल विधियों में शामिल नहीं होना चाहिए। यहां एक अच्छी स्कीमा है जो TDG pattern उपयोग को विज़ुअलाइज़ करती है। टीडीजी दृष्टिकोण का उपयोग करते समय, एसक्यूएल को मॉडल कक्षाओं से डेटासोर्स (टीडीजी) कक्षाओं में स्थानांतरित किया जाना चाहिए। और टीडीजी कक्षाओं के माध्यम से डीबी से प्राप्त होने वाले सभी डेटा मेरे मॉडल सदस्यों में संग्रहीत किए जाते हैं।टेबल डेटा गेटवे के कार्यान्वयन को सक्रिय रिकॉर्ड से अलग कैसे किया जाता है?
अब, सक्रिय रिकॉर्ड कार्यान्वयन के बारे में क्या? अगर मैं डेटा एक्सेस और मेरी मॉडल क्लास को एक मॉडल क्लास में विलय कर दूंगा तो क्या मैं सक्रिय रिकॉर्ड लागू करूंगा? मैं एक स्पष्ट भेद खोजने में असमर्थ था या वे पैटर्न PHP में कैसे दिखते हैं और एक-दूसरे से अलग होते हैं।
अक्सर, मेरे पास एक सिंगलटन डेटाबेस क्लास है और फिर प्रत्येक डेटाबेस तालिका के लिए अलग मॉडल वर्ग है। प्रत्येक मॉडल वर्ग में सीआरयूडी + कई कस्टम (गिनती, औसत और आदि) संचालन होते हैं। कुछ वर्गों में सीआरयूडी या कस्टम ऑपरेशंस से लगातार परिणामों के लिए सदस्य होते हैं - यह ज़रूरत पर किया जाता है। क्या इस दृष्टिकोण को सक्रिय रिकॉर्ड के रूप में पहचाना जा सकता है? इसके अलावा, अगर मैं अपने मॉडल वर्गों से टीडीजी कक्षाओं में एसक्यूएल ले जाऊंगा तो क्या यह टेबल डेटा गेटवे होगा? एक वस्तु है कि एक डेटाबेस तालिका करने के लिए एक गेटवे (466) के रूप में कार्य करता है:
धन्यवाद। टीडीजी लागू करते समय मुझे किस तरह के तरीकों (और एसक्यूएल प्रश्न) हो सकते हैं? मुझे व्यापार तर्क नहीं देना चाहिए, लेकिन व्यापार तर्क सामग्री क्या माना जा सकता है? उदाहरण के लिए, क्या मेरे पास टीडीजी कक्षाओं में चयन विधियां, बैच अपडेट (डेटा की एक सरणी पास), इस तरह के विधियां (और एसक्यूएल प्रश्न) हो सकती हैं, selectAllPersonsByLastName, countAll, SelectAvg और आदि? आईएमएचओ उन सभी को टीडीजी कक्षा में रहना चाहिए। क्या व्यापार तर्क सामग्री का अर्थ है टीडीजी कक्षा से व्युत्पन्न SQL परिणाम सेट से बनाई गई अतिरिक्त गणना? – Centurion
@Centurion एक टीडीजी में तालिका से संबंधित सभी SQL क्वेरी हो सकती हैं: आवेषण, अद्यतन, चयन (दृढ़ता तर्क)।इसमें क्वेरी परिणाम (व्यापार तर्क) संसाधित कोड शामिल नहीं होना चाहिए। रखो कि या तो एक [डोमेन मॉडल] (http://martinfowler.com/eaaCatalog/domainModel.html) या एक [टेबल मॉड्यूल] (http://martinfowler.com/eaaCatalog/tableModule.html) – Gordon
में विचार मिल गया:) लेकिन मेरे पास एक और सवाल है। एक टेबल मॉड्यूल क्लास एक टेबल पर मैप्स करता है, इसलिए आईएमएचओ ऐसी टेबल मॉड्यूल क्लास को मॉडल के रूप में माना जा सकता है (एमवीसी संदर्भ में बात करते समय)? डोमेन मॉडल के बारे में क्या, मॉडल को तब क्या माना जाना चाहिए? कंक्रीट नियंत्रक के लिए उपयोग की जाने वाली कक्षाओं का एक समूह? – Centurion