2010-02-23 6 views
6

मुझे उपयोगकर्ता को ऑब्जेक्ट्स की सूचियों की मनमानी संख्या को स्टोर/लोड करने की अनुमति देने की आवश्यकता है (मान लें कि वे Serializable हैं)। सैद्धांतिक रूप मैंजावा: प्राथमिकता API बनाम अपाचे कॉमन्स कॉन्फ़िगरेशन

class FooBean { /* bean stuff here */ } 

class FooList { 
    final private Set<FooBean> items = new HashSet<FooBean>(); 

    public boolean add(FooBean item) { return items.add(item); } 
    public boolean remove(FooBean item) { return items.remove(item); } 
    public Collection<FooBean> getItems() { 
     return Collections.unmodifiableSet(items); 
    } 
} 

class FooStore { 
    public FooStore() { 
     /* something... uses Preferences or Commons Configuration */ 
    } 
    public FooList load(String key) { 
     /* something... retrieves a FooList associated with the key */ 
    } 
    public void store(String key, FooList items) { 
     /* something... saves a FooList under the given key */ 
    } 
} 

की तरह एक डाटा मॉडल मैं Preferences API या Commons Config का उपयोग करना चाहिए करना चाहते हैं? प्रत्येक के फायदे क्या हैं?

उत्तर

1

मैं सामान्य रूप से प्राथमिकता API के साथ जाऊंगा जो जेडीके का हिस्सा है जब तक कि ऐसे मुद्दे नहीं हैं जिन्हें अन्यथा कॉमन्स-कॉन्फ़िगर द्वारा हल किया जाता है।

व्यक्तिगत रूप से जब मैं वसंत का उपयोग करता हूं तो इसमें एक संपत्ति कॉन्फ़िगरर होता है जो इनमें से अधिकतर मेरे लिए करता है।

6

ठीक है, कॉमन्स-कॉन्फ़िगरेशन, अपाचे प्रोजेक्ट की तरह है, एक अमूर्त परत जो किसी को वरीयता से प्राथमिकताओं, एलडीएपी स्टोर, गुण फ़ाइलों आदि का उपयोग करने की अनुमति देती है। तो, आपका प्रश्न इस प्रकार लिखा जा सकता है: क्या आपको अपनी प्राथमिकताओं को संग्रहीत करने के लिए उपयोग किए जाने वाले प्रारूप को बदलने की आवश्यकता होगी? यदि नहीं, जावा प्राथमिकताएं जाने का रास्ता हैं। अन्यत्र, कॉमन्स कॉन्फ़िगरेशन की पोर्टेबिलिटी पर विचार करें।

2

एक कुंजी से संबद्ध मानों का एक सेट के भंडारण के अपने उदाहरण को देखते हुए आप जब प्रत्येक पुस्तकालय

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

से जुड़े स्ट्रिंग्स की सूची के रूप में स्टोर करें, इसलिए विकल्प यह हो सकता है कि FooBean को बाइट सरणी या स्ट्रिंग में परिवर्तित करना आसान हो।

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

1

कॉमन्स कॉन्फ़िगरेशन जटिल ऑब्जेक्ट संरचनाओं को संग्रहीत करने के लिए उपयुक्त नहीं है। आप एक serialization ढांचे का बेहतर उपयोग करेंगे।