अपनी प्रोग्रामिंग भाषा से डेटाबेस के साथ बातचीत करने का आपका पसंदीदा तरीका क्या है?

डेटाबेस परत से कनेक्ट करने और उससे संपर्क करने के कई तरीके हैं। जावा में, उदाहरण के लिए, सामान्य उपयोग जेडीबीसी कच्चे एसक्यूएल, ऑब्जेक्ट रिलेशनल मैपर, जेडीबीसीटीप्लेट की कॉल हैं ( वसंत ), संग्रहित प्रक्रियाएं, आदि

आपकी भाषा में, कौन सा विकल्प आपकी वरीयता है और क्यों? आप दूसरों पर कब विचार करेंगे?

0
ro fr bn

15 उत्तर

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

ओह, और यदि आपने अभी तक संग्रहित प्रक्रियाएं नहीं बनाई हैं और केवल टेबल हैं, तो विज़ार्ड प्रक्रियाओं या आपके लिए एसक्यूएल कथन का निर्माण करेगा।

यह विजुअल स्टूडियो 2005 के बाद से बाहर हो गया है और मेरे नए वेब ऐप्स के साथ मेरे "संरचना" समय पर भारी कटौती कर चुका है और मैं व्यवसाय और प्रस्तुति तर्क पर अधिक ध्यान केंद्रित कर सकता हूं।

0
जोड़ा

रेलवे पर रूबी ActiveRecord मैंने जो कुछ भी देखा है, उसके साथ फर्श को मिटा देता है। LINQ ऐसा लगता है कि यह कुछ मामलों में बेहतर हो सकता है, लेकिन ActiveRecord बस इतना लचीला है।

0
जोड़ा

ओआरएम वास्तव में शानदार है।

मैं अजगर के भीतर काम करते समय एसक्यूएल कीमिया का उपयोग करता हूं - यह लगभग हर डीबीएमएस के साथ काम करता है जो मैंने पार किया है।

मैकोज़ एक्स पर हल्के डेटा-संचालित अनुप्रयोगों के लिए, मैं कोर डेटा का उपयोग करता हूं, जिसमें एक्सकोड के माध्यम से एक महान डेटा मॉडलिंग टूल उपलब्ध है।

इनमें से दोनों दिखाते हैं कि ओआरएम सही है। मुझे ईजेबी के साथ कम सफलता और आनंद मिला है।

0
जोड़ा

ओआरएम हर बार, कम से कम मुझे डेटाबेस के बारे में बेहतर सोचना होगा।

0
जोड़ा
क्या होगा यदि आप डेटाबेस से 10000 पंक्तियां पढ़ना चाहते हैं और कुल मिलाकर स्टोर करना चाहते हैं? जब आप कर सकते थे नेटवर्क पर सब कुछ खींचें: कुल में डालें .. विवरण से चुनें?
जोड़ा लेखक WW., स्रोत
ओआरएम के साथ, कुल प्राप्त करने के लिए आपको 10000 पंक्तियां पढ़ने की आवश्यकता नहीं है। उदाहरण के लिए, LinqToSql में एक संपत्ति का योग बनाने के लिए एक Sum विधि का उपयोग करना संभव है, जिसे तब उचित SQL में परिवर्तित किया जाता है जो SQL सर्वर को सभी पंक्तियों को वापस किए बिना योग की गणना करने देता है।
जोड़ा लेखक Ole Lynge, स्रोत
@Ole: LinqToSql (जो केवल SQL सर्वर का समर्थन करता है, और एंटीटी फ्रेमवर्क के पक्ष में पहले से ही मर चुका है) अभी भी एक ब्लैक बॉक्स है, क्यों स्वयं एसक्यूएल नहीं लिखते? और यदि आप एक संग्रहीत प्रक्रिया में सारांश तर्क डालते हैं, तो आपको एप्लिकेशन को अपनी तालिकाओं में कच्ची पहुंच देने की आवश्यकता नहीं है।
जोड़ा लेखक ObiWanKenobi, स्रोत

LINQ यहां से मेरे लिए जाने का तरीका है

0
जोड़ा

सी # में मुझे कुछ भी नया के लिए LINQ से SQL पसंद है, लेकिन मुझे वास्तव में netTiers + कोडस्मिथ जनरेटर डेटाबेस में त्वरित और गंदे डेटा परत प्राप्त करने के लिए होता है यदि मैं .NET 2.0 पर C# का उपयोग कर रहा हूं।

0
जोड़ा

मैं एक व्यापार वस्तु मॉडल परत (वस्तुओं और वस्तुओं के collecitons) बनाना पसंद करते हैं।

मैं प्रत्येक ऑब्जेक्ट/संग्रह में डेटाबेस के साथ बातचीत करने की क्षमता बनाता हूं (SQL सर्वर के लिए, मैं System.Data.SqlClient )। मैंने SQL सर्वर, MySQL और Oracle के लिए इस पैटर्न का उपयोग किया है।

फिर मैं अपने आवेदन कोड से वस्तुओं के साथ बातचीत करता हूं।

ऑब्जेक्ट्स में अपना डेटाबेस सारण करके, मेरा एप्लिकेशन कोड बैकएंड डेटाबेस के बावजूद लगातार है।

0
जोड़ा

मुझे हाइबरनेट बहुत पसंद है :)

मुझे पता है कि इसमें एक सीखने की अवस्था है, लेकिन एक बार जब आप इसे महारत हासिल कर लेते हैं, तो यह काफी अच्छा है।

कहने की जरूरत नहीं है, मैं अपने हाथों को नए इकाई फ्रेमवर्क पर .NET 3.5 में प्राप्त करने के लिए इंतजार नहीं कर सकता एसपी 1 (मुझे पता है कि यह पहले से ही उपलब्ध है, लेकिन मैं एक्सएमएल टाइप करने के लिए थोड़ा आलसी हूं :))

0
जोड़ा

मुझे वास्तव में चीजों को करने का 3 + 1 स्तर पसंद है। यूआई के लिए एक स्तर, एक व्यापार तर्क के लिए, और लगातार डेटा के लिए। आखिरी बार आप कहते हैं? डोमेन ऑब्जेक्ट्स और इंटरफेस। इससे किसी भी एक या दो मुख्य स्तरों को डोमेन "टियर" लोड करना संभव हो जाता है, और कोड को काम करना चाहिए।

यह निर्भरता इंजेक्शन और नियंत्रण में उलटा सिद्धांत। डेटा/दृढ़ता स्तर केवल दो चीजें करता है। यह डेटा बनाता है, पढ़ता है, अद्यतन करता है और हटा देता है, और इसे डोमेन ऑब्जेक्ट प्रारूप में मैप करता है।

यूआई टियर सटीक विपरीत करता है। यह डेटा को प्रदर्शित करता है और प्राप्त करता है जिस तरह से उपयोगकर्ता संबंधित हो सकता है, और डोमेन ऑब्जेक्ट प्रारूप से उस आउटपुट/इनपुट को मानचित्र करता है।

व्यापार तर्क स्तर को केवल एक चीज़ जानने की जरूरत है। व्यापार का तर्क। यह इस बात पर परवाह नहीं करता कि डेटा कहां से है, और यह इस बात पर परवाह नहीं करता कि डेटा स्तर कहां रखा जा रहा है। यह जानता है कि इसे एक ऐसे खाते को ध्वजांकित करना चाहिए जो अभी खत्म हो गया था, शारीरिक रूप से ऐसा कैसे करना है जो वास्तव में अपने काम का हिस्सा नहीं है।

डोमेन ऑब्जेक्ट्स में उनके पास कोई तर्क नहीं है, वे केवल स्तर के बीच डेटा पास करने के लिए कंटेनर हैं। इसका मतलब यह है कि आप निर्भरताओं के बारे में सोचने के बिना डोमेन ऑब्जेक्ट्स और इंटरफेस लोड कर सकते हैं।

दिन के अंत में मुझे लगता है कि मेरे पास स्पष्ट रूप से अलग-अलग स्तरों के साथ एक स्पष्ट स्पष्ट कोड आधार है। और कुछ सख्त इंटरफेस और अच्छी बेस क्लास के साथ कोडिंग का अधिकांश हिस्सा सिर्फ सॉफ्टवेयर को बता रहा है कि एक्स होने पर क्या करना है। बस यह कैसे होना चाहिए।


संपादित करें: ओह, हाँ। यह LINQ, सबसोनिक और अन्य ORMs दोनों के लिए सच है।

0
जोड़ा

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

0
जोड़ा

आवेदन के भीतर विशेष स्थिति के अनुरूप क्या होगा इसके आधार पर हम एक मिश्रित दृष्टिकोण का उपयोग करते हैं:

  • प्रदर्शित करने के लिए एक पृष्ठ के लायक जानकारी को पढ़ने के दौरान और उपयोगकर्ता को अपडेट करने के लिए हम हाइबरनेट
  • का उपयोग करते हैं
  • अपडेट के बैच को प्रोसेस करते समय या संक्षेप में जहां अधिकांश डेटा पहले से ही डेटाबेस में है (उदा। दिन प्रसंस्करण का अंत) हम पीएल/एसक्यूएल (और सेट में सोचने की कोशिश करते हैं) का उपयोग करते हैं
  • जब कोई उपयोगकर्ता कोई खोज करता है या सारांश रिपोर्ट चलाता है, तो हम कुछ एसक्यूएल बनाने के लिए ibatis sqlmaps का उपयोग करते हैं और केवल उन फ़ील्ड को वापस लाते हैं जिनमें हम रुचि रखते हैं (प्रत्येक कॉलम नहीं और निश्चित रूप से कोई अनावश्यक बाल पंक्तियां, आग्रह नहीं)
  • कुछ भी जो वास्तव में जल्दी से चलाना है, हम जो भी दृष्टिकोण सबसे अच्छा काम करेंगे
  • का उपयोग करेंगे

यह जावा/ओरेकल के साथ है।

0
जोड़ा

ActiveRecord, which is a pattern documented first (I think) in Fowler's Patterns of Enterprise Architecture. I believe it's implemented in languages other than Ruby, although it's well-known as a core technology in Rails. Whatever, it's a neat abstraction of the database, although I have to confess that I find it a bit clunky and in the find_by_sql area. But that may just be me.

लेकिन (अब गड़बड़ी ओल्ड मैन टोपी डालना) दुनिया के सभी ओआरएम एसक्यूएल के अच्छे ज्ञान के लिए कोई विकल्प नहीं हैं, जिसके बिना मैं वास्तव में आरडीबीएमएस की अनुमति के लिए उपयोग नहीं करना चाहता हूं।

0
जोड़ा

मेरा पसंदीदा तरीका ऑब्जेक्ट एब्स्ट्रक्शन लेयर होना है। आदर्श रूप से, यह केवल स्थान है जो SQL के साथ काम करता है। लेकिन व्यवहार में, वस्तुओं को कभी-कभी एसक्यूएल-वाई चीजों को भी करने की ज़रूरत होती है। लेकिन वस्तु के बाहर कुछ भी नहीं।

अब तक, मैंने खुद को ऐसी परतें लिखी हैं क्योंकि जो उपलब्ध था वह बहुत अजीब, बहुत धीमी या बहुत बड़ी थी।

0
जोड़ा

मिमस्टोन ऑब्जेक्ट रिपोजिटरी के साथ स्मॉलटॉक का उपयोग करने का पसंदीदा तरीका हो सकता है। क्यूं कर? निपटने के लिए कोई ओआरएम समस्या नहीं है। अगर मैं अपने नियोक्ता द्वारा मजबूर या धमकी देता हूं तो मैं केवल कुछ और विचार करता हूं।

0
जोड़ा

हम वर्तमान में ओरेकल डेटाबेस से बात करने के लिए ODAC का उपयोग कर रहे हैं और एक का उपयोग कर रहे हैं ओरेकल पैकेज के बहुत सारे ( पीएल/एसक्यूएल )। एन-स्तरीय सिस्टम RemObjects के माध्यम से किया जाता है जिसका अर्थ है कि हमारे क्लाइंट में इसमें कोई एसक्यूएल नहीं है और केवल HTTP अनुरोध भेजने की क्षमता की आवश्यकता है ताकि कोई इंस्टॉलेशन ओवरहेड न हो।

यह सब बोर्लैंड डेल्फी का उपयोग करके किया जाता है और उत्पादन वातावरण में 2 साल तक जाग रहा है।

0
जोड़ा