2009-12-03 21 views
25

क्या कोई अच्छी डेटाबेस अमूर्त परतें/ऑब्जेक्ट रिलेशनल मैपर/ActiveRecord कार्यान्वयन/एंड्रॉइड के लिए जो कुछ भी कहा जाता है, क्या वहां कोई अच्छा डेटाबेस है? मुझे पता है कि db4o आधिकारिक तौर पर समर्थित है, लेकिन इसमें काफी बड़ा पदचिह्न है और मैं इसके बजाय एक और पारंपरिक डेटाबेस (SQLite) का उपयोग करना चाहता हूं।एंड्रॉइड के लिए उच्च स्तरीय डेटाबेस परत?

+12

मैं तुम्हें संभव के रूप में "धातु" के रूप में करीब रहने के लिए प्रोत्साहित करने के लिए जा रहा हूँ। इनमें से अधिकतर डिवाइस सर्वर की तरह नहीं हैं, जहां आप अमूर्तता की इन अंतहीन परतों पर गंभीर अश्वशक्ति फेंक सकते हैं। ये डिवाइस शक्तिशाली नहीं हैं और आपके द्वारा किए जाने वाले प्रत्येक विधि कॉल में प्रदर्शन हिट और बैटरी हिट दोनों होती है। आपको इस बारे में सोचना होगा कि कम से कम हुप्स के साथ कूदने के लिए सबसे ज्यादा कैसे पूरा किया जाए।एक एबस्ट्रक्शन लेयर जोड़ना कुछ भी नहीं करने वाला है, लेकिन अपने एप्लिकेशन को धीमा कर दें और बस कुछ और बैटरी को जलाएं जो कुछ बुनियादी एसक्यूएल पूरा करेगा। – MattC

+0

मैटसी को +1। सीमित शक्ति और बैटरी जीवन को ध्यान में रखने के साथ, मुझे सच में लगता है कि आप एंड्रॉइड पर ओआरएम टूल्स से दूर रहना चाहते हैं। –

+0

डीबी 4o एंड्रॉइड का लगातार समर्थन नहीं करेगा अगर पदचिह्न अस्वीकार्य था ... –

उत्तर

-4

SQLite स्पष्ट एंड्रॉयड का हिस्सा है:

http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

आप अपने खुद के अमूर्त परत (सरल प्रश्नों के लिए क्वेरी बिल्डर) बनाने के लिए, या अन्यथा एसक्यूएल के साथ सौदा हो सकता है हालांकि।

शायद http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html आपको क्या चाहिए?

+0

मुझे पता है कि एंड्रॉइड में निर्मित SQLite है: जो मैं खोज रहा हूं वह कुछ अधिक उच्च स्तर है। – user222469

1

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

संपादित करें: 2012 में सलाह DroidParts (जो मेरी परियोजना है) के ओआरएम घटक का उपयोग करना होगा।

5

ActiveAndroid आज़माएं। यह मुफ़्त और खुला स्रोत है (अपाचे संस्करण 2.0)।

वेबसाइट से:

ActiveAndroid एक सक्रिय रिकॉर्ड शैली ORM (वस्तु संबंधपरक नक्शाकार) है। [...] ActiveAndroid आपको को SQL12 डेटाबेस रिकॉर्ड्स को सहेजने और पुनर्प्राप्त करने के लिए एकल SQL कथन लिखने की अनुमति देता है। प्रत्येक डेटाबेस रिकॉर्ड को कक्षा में अच्छी तरह से लपेटा जाता है जैसे सेव() और डिलीट()।

[...] एंड्रॉइड में कम से कम कहने के लिए डेटाबेस तक पहुंचना एक परेशानी है। ActiveAndroid कॉन्फ़िगरेशन के कुछ ही सरल चरणों के साथ सभी सेटअप और गन्दा सामान, और सभी का ख्याल रखता है।

5

एक 'एंड्रॉइड-सक्रिय-रिकॉर्ड' प्रोजेक्ट है जो एंड्रॉइड SQLite डेटाबेस तक पहुंचने के लिए ActiveRecord abstraction प्रदान करता है। यह यहाँ उपलब्ध है: http://code.google.com/p/android-active-record

यह जब डेटाबेस संस्थाओं पर CRUD आपरेशन प्रदर्शन बॉयलरप्लेट कोडिंग के सबसे को खत्म करने की अनुमति देता है और यह भी बनाने/बनाए रखने के एक डेटाबेस संरचना के लिए प्रयासों को कम करता है

17

मैं कर रहा हूँ ORMLite के मुख्य लेखक जो डिजाइन किया गया था छोटे होने के लिए [ish] लेकिन अभी भी उच्च स्तरीय कार्यक्षमता प्रदान करते हैं। ORMLite अपनी ओआरएम कार्यक्षमता का समर्थन करने के लिए मूल एंड्रॉइड ओएस डेटाबेस एपीआई को कॉल करता है।सामान्य जानकारी के लिए निम्नलिखित देखें

http://ormlite.com/sqlite_java_android_orm.shtml

यहाँ कुछ एंड्रॉयड उदाहरण अनुप्रयोगों हैं:

http://ormlite.com/docs/android-examples

+0

मैंने हाल ही में एंड्रॉइड के SQLite इंटरफेस के लिए अपना हल्का रैपर विकसित करना शुरू कर दिया है। मेरे पास कई लक्ष्यों थे: मनमाने ढंग से बीन्स को चिह्नित करने के लिए एनोटेशन का उपयोग करके स्वत: उत्पन्न कोड, कोई बोझिल इंटरफेस या अमूर्त आधार वर्गों की आवश्यकता नहीं है, और एक साधारण इंटरफ़ेस: एक सहायक वर्ग पर एक विधि को कॉल करने या डीएओ लोड करने के लिए एक विधि को कॉल करने के समान सरल कुछ। एंड्रॉइड इंटरफ़ेस इसके लिए रास्ते में आ गया और मुझे शुरू किए गए उच्च स्तरीय डिज़ाइन को स्क्रैप करना पड़ा। ORMLite ऐसा लगता है कि यह मेरी आवश्यकताओं के लिए एकदम सही फिट नहीं है, लेकिन अब तक यह वास्तव में अच्छा दिखता है। मैं इसे जांचने की सलाह देते हैं। –

+0

मुझे बताएं कि यह क्या खो रहा है जॉन। उपयोगकर्ता मेलिंग सूची पर अधिक एंड्रॉइड फीडबैक उपयोगी होगा। – Gray

+0

@ जॉन क्या आप इस "हल्के रैपर" के लिए एक लिंक प्रदान कर सकते हैं ?? धन्यवाद – Otto

0

Androrm पर एक नज़र डालें। यह खुला स्रोत है और अच्छी तरह से प्रलेखित (see here) है। यदि आपने कभी डीजेंगो के साथ काम किया है, तो आप देखेंगे कि वाक्यविन्यास बहुत समान है।

एंड्रॉर्म सबसे आम क्षेत्र प्रकारों, साथ ही संबंधपरक क्षेत्रों के लिए अमूर्त कक्षाओं का भी समर्थन करता है। इस तरह यह आपको अपने डेटा के लिए बहुत ही आसान तरीके से अपने डेटा के लिए पूछताछ करने में सक्षम बनाता है।

1

मुझे एक ही समस्या का सामना करना पड़ा और एंड्रॉइड-सक्रिय-रिकॉर्ड और ActiveAndroid दोनों को देखा। मैंने पाया कि एंड्रॉइड-सक्रिय-रिकॉर्ड उन चीजों को संभाल नहीं पाया जिनके बारे में मैंने परवाह किया था (उदाहरण के लिए रिश्ते), और ActiveAndroid निःशुल्क नहीं है। इसलिए, मैंने अपनी पुस्तकालय लिखने का फैसला किया। इसे एंड्रॉइड रिकार्ड कहा जाता है और यह hosted on GitHub है और आप जो चाहते हैं उसके साथ आप स्वतंत्र हैं (मुझे लगता है कि मैं एमआईटी लाइसेंस के साथ जा रहा हूं)। मैं इसे हर दिन उपयोग करता हूं और मैं इसके साथ संतुष्ट हूं, लेकिन मुझे फीडबैक प्राप्त करना अच्छा लगेगा।

यदि आपको यह जानने की आवश्यकता है कि इसका उपयोग कैसे किया जाए, तो मैं प्रलेखन पर काम कर रहा हूं। अगर आपको तुरंत इसकी आवश्यकता है, तो आप this lame example project देख सकते हैं जो आपके पैर की उंगलियों को डुबोने के लिए पर्याप्त होना चाहिए। आप मुझे भी ईमेल कर सकते हैं।

2

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

0

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

2

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

12

मैंने शुगर ओआरएम की कोशिश की, जो बहुत ही बुनियादी (और उपयोग करने में आसान) है लेकिन यह मेरी आवश्यकताओं के लिए काम करता है।

Sugar website

+1

क्या आप इसे और अन्य विकल्पों के बीच तुलना के बारे में जानते हैं? शायद एक बेंचमार्क? मैं जानना चाहता हूं कि यह कितना अच्छा काम करता है ताकि यह ऐप को बहुत धीमा नहीं करेगा। –

+0

नहीं, लेकिन यदि आप प्रदर्शन की तलाश में हैं तो मैं इसे गैर-प्रदर्शन महत्वपूर्ण स्थानों पर उपयोग करने का सुझाव दूंगा और या तो डेटाबेस तक सीधे पहुंच का उपयोग कर सकता हूं या डोमेन कक्षाओं पर सहायक तरीके लिख सकता हूं। मैं Person.findAllByCityAndAge (स्ट्रिंग सिटी, इंट एज) जैसे कुछ पर सोच रहा हूं {कुछ प्रदर्शन परीक्षण कोड, चीनी का उपयोग करके आवश्यक नहीं} – enTropy

+0

आपने डेटाबेस परिवर्तनों को कैसे संभाला? आप "पर्यवेक्षकों" को कैसे सूचित करते हैं कि उन्हें खुद को अपडेट करना चाहिए? लोडर के समान, जो यहां उपयोग योग्य नहीं हैं? –

2

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

http://www.rushorm.com/

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