2011-02-03 8 views
6

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

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

मुझे खेद है कि अगर मैं n00bish ध्वनि करता हूं - लेकिन मैं नया हूं और जानना चाहता हूं कि अन्य दृष्टिकोण क्या हैं।

उत्तर

2

कोई भी दोनों का उपयोग कर सकता है।

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

अन्य सभी के लिए, सादा एसक्यूएल राजा है।

मैं राय है कि किसी भी कोड है कि उत्पन्न किया जा सकता, उत्पन्न किया जाना चाहिए, जब तक कि यह एक स्पष्ट रूप से घटिया संस्करण का उत्पादन नहीं करता के रूप में की है। मुझे लगता है कि यह मेरा मुख्य बिंदु है: किसी एप्लिकेशन के डेटाबेस कोड की एक महत्वपूर्ण राशि, ओआरएम द्वारा डिलीट की जा सकती है और अभी भी डेटाबेस विशेषज्ञ द्वारा लिखित हाथ से तैयार किए गए एसक्यूएल कोड के रूप में समान रूप से अच्छी तरह से प्रदर्शन करती है।

+0

+1 इस तथ्य के लिए कि सिंगल-पंक्ति ओप समान हैं, और जिस टिप्पणी को मैंने कभी नहीं सुना है, और यह सोचने लगा कि मैं एकमात्र व्यक्ति था जिसने इसे माना, कि उत्पन्न किया जा सकता है कि कोई भी कोड उत्पन्न किया जाना चाहिए। हालांकि, मैं इस बात से सहमत नहीं हूं कि ओआरएम जेनरेट कोड भी काम करता है, आम तौर पर रिलेशनल के बजाय ओओ विचारों पर मॉडलिंग से प्राप्त होने वाले ब्लेचरस टेबल डिज़ाइनों के कारण। लेकिन अभी भी "कोई भी कोड जेनरेट किया जा सकता है" कथन के लिए +1 –

+0

+1 के लायक है। मैं शायद इसे "अच्छी तरह से" के साथ प्रत्ययित करूंगा - यानी कोड उत्पन्न न करें, _good_ कोड उत्पन्न करें। लेकिन सिद्धांत खड़ा है। – sfinnie

+0

@ केन डाउन, यह डिजाइन के साथ एक समस्या होगी, न कि ओआरएम के साथ। लेकिन मुझे आपकी बात मिलती है, और पूरी तरह से सहमत हैं। – Ronnis

3

स्पष्ट पहचानने के लिए क्षमा न करें। जो अधिक अनुभव वाले लोग अक्सर आपके पास यह पहचानने में असफल हो जाते हैं कि आपके पास क्या कारण है: ओआरएम खराब इंजीनियरिंग है।

लेकिन मैं एक रान में उतरना नहीं चाहता। स्टाइलिस्ट से एम्बेडेड एसक्यूएल रेंज का उपयोग करने के खिलाफ तर्क, "मैं अपने कोड में कचरा नहीं चाहता", उम, स्टाइलिस्ट, "एसक्यूएल बदसूरत है।" लेकिन यह काम करता है, यह तेज़ है, और यह अच्छी इंजीनियरिंग है।

+0

ओआरएम और सादे एसक्यूएल + जेडीबीसी/आईबाटिस दोनों के साथ काम करने के बाद, मैं अभी भी अपने प्रश्नों को लिखना पसंद करता हूं या बेहतर हूं, मेरे डीबीए ने मेरे प्रश्नों को अनुकूलित किया है, उन तर्कों को सीखने के लिए बहाने की तरह लगता है (प्रोपर) एसक्यूएल – Harima555

+1

असल में ओआरएम का उपयोग करने का मतलब यह नहीं है कि आपके पास जेनरेट एसक्यूएल पर नियंत्रण नहीं है या आपके पास एक अच्छा डीबी डिज़ाइन नहीं है। इसके अलावा, यदि आपको SQL क्वेरी लिखने के लिए विशेष कौशल की आवश्यकता है तो आमतौर पर इसका मतलब है कि आपकी डीबी स्कीमा टूट गई है। स्कीमा को लिखने में आसान अक्सर पूछताछ करना चाहिए (और निष्पादित करने के लिए तेज़)। जब मैं ओआरएम का उपयोग करता हूं तो मैं अपनी स्कीमा इस तरह से बनाता हूं कि मेरे ओआरएम द्वारा उत्पन्न प्रश्न सरल और तेज़ हैं। यह रॉकेट विज्ञान नहीं है। –

+0

तो यदि कोई स्कीमा किसी ओआरएम से आसानी से उपयोग नहीं कर पाती है, तो स्कीमा टूटा हुआ है ?, मैं सहमत नहीं हूं, ओआरएम के साथ उपयोग करने के लिए स्कीमा भिन्न क्यों होगा, आमतौर पर एक स्कीमा को पूरा करने के लिए डिज़ाइन किया गया है उदारता की जरूरतों, न कि ओआरएम की प्रदर्शन आवश्यकताओं, और अगर मुझे अपनी स्कीमा तैयार करनी है तो मेरा ओआरएम खुश और तेज़ है, अब यह टूट गया है – Harima555

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