2010-02-23 20 views
6

Devo consentire all'utente di memorizzare/caricare un numero arbitrario di liste di oggetti (supponendo che siano serializzabili). Concettualmente Voglio un modello di dati comejava: API Preferenze vs Configurazione Apache Commons

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 */ 
    } 
} 

Dovrei usare il Preferences API o Commons Config? Qual è il vantaggio di ciascuno?

risposta

1

Normalmente utilizzerò l'API delle preferenze che fa parte di JDK a meno che non vi siano problemi risolti in altro modo da commons-config.

Personalmente quando uso la primavera ha un Configuratore di Proprietà che fa la maggior parte di questi per me.

6

Bene, la configurazione di commons è, come molti dei progetti di apache, un livello di astrazione che consente di utilizzare senza preferenze preferenze, un archivio LDAP, file di proprietà e così via. Quindi, la tua domanda potrebbe essere riscritta così com'è: sarà necessario modificare il formato che utilizzi per memorizzare le tue preferenze? Se no, le preferenze di java sono la strada da percorrere. Altrove, considera la portabilità della configurazione di comuni.

2

dato il vostro esempio di memorizzare una serie di valori associati a una chiave che sembrerebbe avere le seguenti opzioni quando si utilizza ogni libreria

  • Preferenze - negozio come un array di byte associato con i principali
  • Commons Configurazione - memorizza come elenco di stringhe associate a un tasto

Quindi la scelta potrebbe essere la seguente: è più facile convertire un FooBean in un array di byte o una stringa.

L'altro vantaggio di Commons Configuration sono i diversi backend. L'ho usato per memorizzare le proprietà in un database. Se si desidera archiviare gli oggetti da qualche altra parte rispetto alla macchina locale dell'utente, sarebbe la scelta migliore.

1

Commons La configurazione non è adatta per la memorizzazione di strutture di oggetti complessi. Faresti meglio ad usare un framework di serializzazione.

Problemi correlati