NHibernate में रिपोजिटरी पैटर्न की आवश्यकता क्यों है?


13

मैं आधिकारिक आपका पहला NHibernate आधारित आवेदन पढ़ रहा हूं ।

जबकि ट्यूटोरियल अच्छा और पालन करने में आसान है, मैं सोच रहा हूं कि रिपॉजिटरी पैटर्न का उपयोग क्यों किया जाता है।

विभिन्न में Add, Update, Removeमें तरीकों ProductRepositoryकार्यान्वयन, कोड लगभग समान है - वे सभी लेनदेन का उपयोग कर रहे हैं, और अंतर "मांस" में यानी कॉल है session.Saveपूर्णांक Addविधि, session.Deleteमें removeविधि। ( पेज में HTML एंकर की कमी है, लेकिन आप संबंधित कोड के लिए पेज खोज सकते हैं public void Remove, जैसेpublic void Add )

वह कोड सिर्फ "गलत लगता है"।

लेखक रिपॉजिटरी पैटर्न का उपयोग क्यों कर रहा है - क्या यह सिर्फ NHibernate के उपयोग के प्रदर्शन के लिए है या यह आवश्यक है या कोई अन्य कारण है?

Ps। ActiveRecord का उपयोग करके मेरी पृष्ठभूमि रूबी रेल्स से है इसलिए मैं यह समझने की कोशिश कर रहा हूं कि NHibernate कैसे काम करता है / उपयोग किया जाता है।


1
यदि आप ACtive रिकॉर्ड पैटर्न पसंद करते हैं तो आप NHibernate Castleproject.org/activerecord के
बेन रॉबिन्सन

3
यह एक आलोचनात्मक प्रश्न है। वहाँ कुछ बहस चल रही है कि इसका उपयोग करना है या नहीं। आयेंडे ने रिपोजिटरी

जवाबों:


10

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


मुझे लगता है कि हाँ और नहीं। NHibernate सत्र ही जेनेरिक भंडार का एकमात्र प्रकार है। इसलिए एक अतिरिक्त रिपॉजिटरी जोड़ना सामान्य रूप से सत्र ऑब्जेक्ट में एक मुखौटा जोड़ने से ज्यादा कुछ नहीं है।

वास्तव में मेरा जवाब "रिपॉजिटरी पैटर्न की आवश्यकता नहीं है" की तरह शुरू होता है ... "यह सिर्फ एक वास्तुशिल्प निर्णय हो सकता है जो व्यवसाय की जरूरतों के खिलाफ हो

मैं उस पर पूरी तरह सहमत हूं। लेकिन मुझे यह बात याद आ रही थी कि सत्र ही एक भंडार है, बस इतना ही।

9

रिपॉजिटरी पैटर्न का उपयोग करने का लाभ आपके डेटा एक्सेस लेयर को मॉक करना है, ताकि आप DAL कोड को कॉल किए बिना अपने बिजनेस लेयर कोड का परीक्षण कर सकें। अन्य बड़े फायदे हैं लेकिन यह मेरे लिए बहुत महत्वपूर्ण है।


2
+1 ActiveRecord पैटर्न के लिए डीओएल को मॉकिंग के लिए अलग करना बहुत मुश्किल हो जाता है, आमतौर पर यूनिट के परीक्षणों के साथ अपने डेटाबेस की आवश्यकता होती है (जिस स्थिति में यूनिट टेस्ट एक एकीकरण परीक्षण बन जाता है)।
मैटवेवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.