2009-03-29 13 views
5

मैं NHibernate और iBATIS.NET की तुलना में कुछ अद्यतित जानकारी ढूंढ रहा हूं। मुझे Google की खोज करने वाली कुछ जानकारी मिली, लेकिन इसका एक अच्छा हिस्सा इन उत्पादों के जावा संस्करणों पर लागू होता है या दिनांकित होता है।NHibernate और iBATIS.NET के बीच क्या अंतर है?

कुछ विशिष्ट बातें मैं में दिलचस्पी है:

  • कौन सा बेहतर है अगर तुम दोनों डेटा मॉडल और आवेदन को नियंत्रित?
  • iBATIS को बार-बार सीखने के लिए सरल कहा जाता है - क्या इसमें दीर्घकालिक रखरखाव के परिणाम हैं (यानी शुरू करना आसान है, बनाए रखने में कठोर)?
  • क्या दोनों अंतर्निहित डेटाबेस विक्रेता को स्विच करना आसान बनाते हैं?
  • आपके डेवलपर्स को एसक्यूएल के साथ कितना कुशल होना चाहिए?
  • कोई भी प्रमुख विशेषता है जिसमें किसी की कमी है?
  • क्या कोई उत्पाद किसी विशेष प्रकार के एप्लिकेशन के लिए अधिक उपयुक्त है?

मनाए गए लाभ और दोषों के वास्तविक विश्व उदाहरणों की सराहना की जाती है!

संपादित करें: जानकारी के लिए धन्यवाद। मैं अपना खुद का मूल्यांकन भी कर रहा हूं। एक बात जो मैं अभी भी सोच रहा हूं, क्या आईबीएटीआईएस आपको जटिल ऑब्जेक्ट ग्राफ़ को सहेजने/अपडेट करने में मदद करता है? ऐसा लगता है कि NHibernate में अच्छा है कि मैं इसे एक रूट ऑब्जेक्ट पास कर सकता हूं और यह बताता है कि क्या कुछ भी है, तो डेटाबेस में अद्यतन करने की आवश्यकता है।

उत्तर

5

मैंने कुछ समय पहले कुछ शोध किया था।

मुझ से एक विशिष्ट सवाल है, आप कुछ अतिरिक्त जानकारी दे सकता है: Would you use NHibernate for a project with a legacy database, which is partly out of your control?

अपनी रुचि के अंक में से कुछ मैं जवाब कर सकते हैं:

  • कौन सा बेहतर है अगर आप नियंत्रित दोनों डेटा मॉडल और आवेदन पत्र?

मैं इसे अन्य तरीकों से उत्तर दे सकता हूं: यदि आपके पास डेटा मॉडल पर नियंत्रण नहीं है और इस प्रकार कुछ विरासत डेटाबेस का सामना करना पड़ रहा है, तो iBatis बेहतर विकल्प है।

  • आईबीएटीआईएस को बार-बार सीखने के लिए सरल कहा जाता है - क्या इसमें दीर्घकालिक रखरखाव के परिणाम हैं (यानी शुरू करने में आसान, बनाए रखने में कठोर)?

यह निर्भर करता है कि आप इसके साथ क्या करना चाहते हैं। यदि आपके पास डोमेन संचालित विकास दृष्टिकोण है तो iBatis समय के साथ दर्दनाक हो सकता है। यदि आप केवल सरल डेटा मैनिपुलेशन करते हैं और आपके पास पूर्ण उड़ा हुआ डोमेन मॉडल नहीं है तो उस समय nHibernate एक ओवरकिल हो सकता है।

  • क्या दोनों अंतर्निहित डेटाबेस विक्रेता को स्विच करना आसान बनाते हैं?

दोनों में एक विशिष्ट डेटाबेस विक्रेता से आपको ढालने के लिए तंत्र हैं, लेकिन मैं मानता हूं कि इस दिशा में गहन शोध नहीं किया है।

  • आपके डेवलपर्स को एसक्यूएल के साथ कितना कुशल होना चाहिए?

जब आप iBatis का उपयोग करते हैं, तो आपको NHibernate से अधिक SQL कौशल की आवश्यकता होती है। IBatis का उपयोग करके आपको हमेशा कुछ एसक्यूएल कोड करने की आवश्यकता होती है। NHibernate आपको SQL कथन कोड करने की आवश्यकता नहीं है - यह आपके लिए डीडीएल भी कर सकता है। शक्तिशाली सुविधाओं के लिए आपको पुराने अच्छे एसक्यूएल में जाना होगा, जो अपरिहार्य होगा।

कुछ अन्य अंक:

  • मैं व्यक्तिगत रूप से है कि iBatis भी बहुत कुछ lightweighter पाते हैं। आप चीजें बहुत जल्दी कर सकते हैं। NHibernate अधिक शक्तिशाली है, लेकिन इसमें बहुत अधिक सुविधाएं हैं, जिनका आप गलत तरीके से उपयोग कर सकते हैं।

  • NHibernate और iBatis के उपयोग को जोड़ना संभव है! आप अपने व्यापार तर्क के लिए NHibernate का उपयोग कर सकते हैं।रिपोर्टिंग उद्देश्यों के लिए, जहां आप केवल टेबल से डेटा पढ़ते हैं, iBatis पर फ़ॉलबैक।

  • यदि आपके आवेदन में लंबा जीवन चक्र और बहुत से व्यवसाय तर्क हैं, तो NHibernate पर विचार करें। व्यापार की वस्तुओं को संभालने में आपकी सहायता करने में बहुत सारी सुविधा है।

  • एनएचबेर्नेट के आसपास का समुदाय बहुत सक्रिय है और उपयोगी टूल के साथ आता है।

3

एक अर्थ में यह संतरे से सेब की तुलना कर रहा है।

यदि आप डेटा मॉडल और एप्लिकेशन दोनों को नियंत्रित करते हैं तो बेहतर होगा?

वे दोनों सामान्यीकृत डेटाबेस के साथ अच्छी तरह से काम करते हैं, इसलिए यदि आप डीबी आकार दे सकते हैं तो वे कम या कम बराबर हैं। iBatis विरासत डेटाबेस पर मैपिंग में बेहतर है क्योंकि यह वास्तव में डेटाबेस संरचना की परवाह नहीं करता है। यह केवल परिणाम सेट के आकार की परवाह करता है।

। आईबीएटीआईएसआई को बार-बार सीखने के लिए सरल कहा जाता है - क्या इसमें दीर्घकालिक रखरखाव के परिणाम हैं (यानी शुरू करने में आसान, बनाए रखने में कठोर)?

यह बहुत आसान है, लेकिन ऐसा इसलिए है क्योंकि इसमें बहुत छोटी विशेषता है। मुझे नहीं लगता कि इसमें कोई समय टिकने वाला दीर्घकालिक रखरखाव के मुद्दे हैं।

क्या दोनों अंतर्निहित डेटाबेस विक्रेता को स्विच करना आसान बनाते हैं?

हाँ

कैसे कुशल अपने डेवलपर्स एसक्यूएल के साथ होने की जरूरत है?

दोनों को SQL का एक अच्छा ज्ञान की आवश्यकता है। IBatis के साथ, आपको अभी भी एसक्यूएल प्रश्न/procs लिखना है। NHibernate के साथ आपको प्रभावी एसक्यूएल प्राप्त करने के लिए एनएचबीर्नेट क्वेरी लिखना है। न तो एसक्यूएल ज्ञान के लिए एक प्रतिस्थापन हैं।

कोई भी प्रमुख विशेषता है जिसमें किसी अन्य की कमी है?

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

3

हमने हाल ही में इन दो उपकरणों की तुलना में एक लेख पोस्ट किया है, और मुझे लगता है कि आपके कई प्रश्नों को संबोधित किया गया है। लेख यहां our wiki site पर है।

+1

यह एक अच्छा लेख है। धन्यवाद! – Jeremy

+0

यह लिंक चला गया है? अब इसे खोल नहीं सकते। – Dhananjay

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