2009-02-04 19 views
8

मैं एक साधारण आवेदन की स्थिति को बचाने के लिए सबसे अच्छा तरीका खोजने की कोशिश कर रहा हूं। डीबी पॉइंट-ऑफ-व्यू से दिनांक फ़ील्ड और रिश्तों के साथ 4/5 टेबल हैं।जावा एप्लिकेशन में डेटा को सहेजने का सबसे अच्छा तरीका?

क्योंकि ऐप सरल है, और मैं चाहता हूं कि उपयोगकर्ता के पास डेटा (यूएसबी पेन, ड्रॉपबॉक्स, आदि) को स्थानांतरित करने का विकल्प हो, मैं सभी डेटा को एक फ़ाइल में रखना चाहता था।

ऐसा करने का सबसे अच्छा तरीका/lib क्या है?

एक्सएमएल आमतौर पर इस के लिए सबसे अच्छा प्रारूप है (पठनीयता & खुलेपन), लेकिन मुझे SAX/DOM के बिना इसके लिए कोई महान lib नहीं मिला है।

उत्तर

11

यदि आप एक्सएमएल का उपयोग करना चाहते हैं, तो एक्सएमएल में जावा ऑब्जेक्ट्स के सरल क्रमबद्धता के लिए XStream पर एक नज़र डालें। यहां "Two minute tutorial" है।

यदि आप कुछ सरल चाहते हैं, मानक Java Properties format कुछ छोटे डेटा को स्टोर/लोड करने का भी एक तरीका हो सकता है।

+1

java.util.Properties एक्सएमएल भी करता है। –

+0

एक्सस्ट्रीम ऐसा लगता है जो मैं ढूंढ रहा था। क्या आप इस lib में लेख अनुकूलित करने के लिए उपलब्ध किसी भी कोड के बारे में जानते हैं? मुझे हर बदलाव पर डिस्क पर लिखना नहीं चाहिए। – fabiopedrosa

+0

लेखन शुरू करने के लिए यह पूरी तरह से आपके ऊपर है। एक्सस्ट्रीम आपके लिए कोई स्वचालित बचत नहीं करेगा। –

0

2 अन्य विकल्पों पर विचार कर सकते -

  • HSQLDB एक छोटे से एसक्यूएल डाटाबेस जावा में लिखा है। अपने प्रयोजनों के लिए अधिक प्रासंगिक है, यह लिए विन्यस्त किया जा सकता बस एक csv फ़ाइल को लिखने के रूप में यह डेटा संग्रह है, ताकि आप क़यास यह एक पोर्टेबल डेटासंग्रह के रूप में पाठ उत्पादन है और अभी भी एसक्यूएल का उपयोग करें, यदि है कि आप क्या पसंद करते हैं इस्तेमाल कर सकते हैं ।
  • एक दूसरा विकल्प डेटास्टोर को सीरियलाइज्ड फ़ाइल पर सीधे या लाइब्रेरी जैसे प्रीलेरर के माध्यम से लिखना हो सकता है। बहुत अच्छा प्रदर्शन और लागू करने के लिए सरल, विपक्ष प्रारूप की नाजुकता और अस्पष्टता है।

लेकिन यदि डेटा पर्याप्त छोटा है, तो एक्सएमएल शायद बहुत कम परेशान है।

1

सादा JAXB एनोटेशन कि JDK के साथ आते हैं का उपयोग करें:

@XmlRootElement 
private class Foo { 
    @XmlAttribute 
    private String text = "bar"; 
} 
यहाँ

एक blog-post of mine कि JAXB की इस सरल उपयोग के बारे में अधिक विवरण देता है (यह भी एक और अधिक "उत्तम दर्जे का" JAXB आधारित दृष्टिकोण mentiones - यदि आपको अपने एक्सएमएल स्कीमा पर बेहतर नियंत्रण की आवश्यकता है, उदाहरण के लिए पिछली संगतता की गारंटी के लिए)

+0

एक्सस्ट्रीम में क्या अंतर है? – lony

0

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

+0

JSON deserialize करने के लिए दर्द होता है। कोई मजबूत टाइपिंग का मतलब है कि आपको डेटा संरचना को जानने की आवश्यकता है।मुश्किल से एक गेम ब्रेकर, लेकिन जब मैंने जावा डेटा प्रतिधारण के लिए कोशिश की तो कमजोर महसूस हुआ। – Tim

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