2008-08-31 11 views
10

मेरे डेस्कटॉप एप्लिकेशन में जावा ऑब्जेक्ट्स का एक बड़ा पेड़ है और फाइल सिस्टम में फ़ाइल के रूप में उन्हें बनाए रखने का सबसे अच्छा तरीका तय करने का प्रयास कर रहा हूं।जावा डेस्कटॉप एप्लिकेशन में डेटा को बनाए रखने का सबसे अच्छा तरीका क्या है?

कुछ विचार मैं लिया है थे:

  • रोल मेरे अपने DataOutputStream का उपयोग कर serializer: यह मैं क्या फ़ाइल में किया गया था की सबसे बड़ी नियंत्रण देना होगा, लेकिन यह सूक्ष्म प्रबंधन की कीमत पर।

  • ऑब्जेक्टऑटपुटस्ट्रीम और इसके विभिन्न संबंधित वर्गों का उपयोग करके सीधे पुराने सीरियलाइजेशन: हालांकि मुझे डेटा बेल्ट नहीं मिला है, हालांकि मुझे इस पर बेचा नहीं गया है। किसी ऑब्जेक्ट की संरचना को बदलने से इसके क्रमबद्ध उदाहरण टूट जाते हैं। तो मैं एक भयानक संस्करण दुःस्वप्न प्रतीत होता है में बंद कर दिया गया है।

  • एक्सएमएल क्रमबद्धता: यह रूप में भंगुर नहीं है, लेकिन यह है कि सीधे बाहर क्रमबद्धता काफी धीमी है। इसे मेरे कार्यक्रम के बाहर बदल दिया जा सकता है।

  • JavaDB: मैं इस पर विचार किया था के बाद से मैं आराम से लेखन JDBC अनुप्रयोगों हूँ। यहां अंतर यह है कि डेटाबेस इंस्टेंस केवल तब ही जारी रहेगा जब फ़ाइल खोला या सहेजा जा रहा था। यह सुंदर नहीं है लेकिन ... यदि आवश्यकता बाद में उत्पन्न होती है तो यह केंद्रीय सर्वर आर्किटेक्चर में माइग्रेट करने के लिए उधार देती है और यह डेटामैडल को एक सरल तरीके से घुमाने की संभावना पेश करती है।

मुझे यह देखने के लिए उत्सुकता है कि अन्य लोग क्या सोचते हैं। और मुझे उम्मीद है कि मैंने ऊपर दिए गए लोगों की तुलना में कुछ स्पष्ट, और सरल दृष्टिकोण को याद किया है।


यहाँ कुछ और अधिक विकल्प नीचे दिए गए उत्तर से चुनी गई हैं:

  • एक वस्तु डाटाबेस - काफी कम बुनियादी सुविधाओं है की तुलना में ORM दृष्टिकोण और एक एक्सएमएल दृष्टिकोण की तुलना में तेजी प्रदर्शन करती है। धन्यवाद aku

उत्तर

3

db4objects मेरे अनुभव में सबसे अच्छा विकल्प

4

हाइबरनेट को डेटाबेस में इंटरफ़ेस करने के लिए एक आसान तरीका के रूप में देखें। मोटे तौर पर

एक्सएमएल क्रमबद्धता/अक्रमांकन codehaus.org कोडिंग के बिना से

1

Xstream। आप इसे ट्विक करने के लिए एनोटेशन का उपयोग कर सकते हैं। दो परियोजनाओं में अच्छी तरह से काम करना जहां मैं काम करता हूं।

http://cjugaustralia.org/?p=61

5

मैं अपने अंतिम विकल्प JavaDB (Derby की सूर्य की वितरण) के लिए जाना होगा पर मेरे उपयोगकर्ता समूह प्रस्तुति देखें और Hibernate या iBatis की तरह एक वस्तु संबंधपरक परत का उपयोग करें। पहले तीन एप्रोच का उपयोग करना मतलब है कि आप एप्लिकेशन सुविधाओं को विकसित करने के बजाय डेटाबेस इंजन बनाने में अधिक समय व्यतीत करने जा रहे हैं।

4

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

मैंने जावाडीबी का उपयोग नहीं किया है, लेकिन मुझे H2 और SQLite के साथ शुभकामनाएं मिली हैं। SQLite एक सी लाइब्रेरी है जिसका अर्थ है तैनाती के मामले में थोड़ा और काम। हालांकि, इसे एक एकल, क्रॉस-प्लेटफ़ॉर्म लाइब्रेरी में संपूर्ण डेटाबेस को संग्रहीत करने का लाभ है। असल में, यह एक पूर्व-पैक, जेनेरिक फ़ाइल प्रारूप है। SQLite इतना उपयोगी रहा है कि मैंने स्क्रिप्ट में टेक्स्ट फ़ाइलों की बजाय इसका उपयोग शुरू कर दिया है।

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

0

मुझे लगता है कि यह आपके लिए आवश्यक चीज़ों पर निर्भर करता है। आइए विकल्पों को देखें:

1) Descarded imediatelly! मैं भी औचित्य नहीं दूंगा। :)

2) यदि आपको एक सरल, त्वरित, एक-विधि दृढ़ता की आवश्यकता है, तो इसके साथ चिपके रहें। यह पूरी डेटा ग्राफ के रूप में जारी रहेगा! सावधान रहें कि आप लगातार ऑब्जेक्ट्स को कितनी देर तक बनाए रखेंगे। जैसा कि आपने बताया है, संस्करण एक समस्या हो सकती है।

3) धीमे (2) से अधिक, अतिरिक्त कोड की आवश्यकता है और उपयोगकर्ता द्वारा संपादित किया जा सकता है। मैं केवल इसका उपयोग डेटा का उपयोग किसी अन्य भाषा में किसी क्लाइंट द्वारा किया जाना चाहिए।

4) यदि आपको किसी भी तरह से अपना डेटा पूछना है, तो डीबी समाधान के साथ चिपके रहें।

ठीक है, मुझे लगता है कि आप पहले से ही अपने प्रश्न का उत्तर था :)

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

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