2010-03-12 13 views
14

Sto sviluppando un'applicazione Java Desktop e voglio un light database che può essere utilizzato con Hibernate e che può essere compresso con un'applicazione.Database più leggero da imballare con un'applicazione

Stavo per utilizzare il database Derby. La sua dimensione è di circa 2 MB. Ma prima volevo avere opinioni di esperti su SO.

Funzionerà con Hibernate?

In realtà, sono nuovo di Hibernate e stavo studiando che richiede un Dialect per un database quindi Hibernate ha il dialetto per Derby?

+0

DerbyDialect: https://www.hibernate.org/hib_docs/v3/api/org/hibernate/dialect/DerbyDialect.html – ewernli

+0

Vedere http://stackoverflow.com/questions/271319/lightweight-sql-database- che-doesnt-require-installation per equivalenti in .net world – nawfal

risposta

17

JavaDB (distribuzione supportata di Sun Apache Derby open source, HSQLDB (non molto attivo) e H2 (il successor of HSQLDB) sono tutti i motori di database integrabili al 100% Java e possono essere utilizzati con lo stato di ibernazione tutti con (ad es. ci sono dialetti per loro). Fare riferimento a this page e this one.

HSQLDB ha il footprint più piccolo (~ 700 KB) di tutti. Ma in termini di funzionalità (vedi this comparison), H2 è il chiaro vincitore e il suo ingombro (~ 1 MB) è ancora inferiore a quello di Derby (~ 2 MB).

La scelta finale dipende da cosa è necessario, ma H2 è un buon compromesso tra caratteristiche e dimensioni (in altre parole, un grande concorrente). Dai un'occhiata al confronto menzionato.

+0

Risposta molto informativa .. Userò H2 ma prima che di seguito sono alcune domande veloci: 1. Posso inserire H2 nella mia applicazione commerciale gratuitamente (I controllato il sito e ho scoperto che è gratuito ma voglio comunque confermarlo) 2. Qual è la tua opinione su SQLLite e Firebird contro H2 –

+4

@Yatendra 1. Sì, puoi (http://www.h2database.com/html/license.html) 2. Firebird e SQLite sono buoni prodotti ma non al 100% Java (cioè può 'eseguire nello stesso processo Java) e questo renderebbe le cose più complesse. Andrei per H2. –

+0

Mi piace, è tutto ciò di cui ho bisogno – RayanFar

7

Suggerirei HSQLDB. È piccolo e veloce e funziona bene con Hibernate. Hibernate ha anche un dialetto per il Derby DB (non l'ho usato comunque e penso che non sia ancora ufficialmente supportato da Hibernate).

+0

Ho letto su HSQLDB. Dicono che è un database in memoria che non ha bisogno di essere installato e configurato. Se rimane in memoria, allora dovrebbe consumare molta memoria per il server del database stesso e molta memoria per i dati che inseriremo in esso. Può essere che ho interpretato l'affermazione precedente come errata ma non ho trovato molte informazioni sul sito HSQLDB. Ho trovato le informazioni di cui sopra nei tutorial di Hibernate. Correggimi se sbaglio? Inoltre, se rimane in memoria, il modo in cui i dati rimangono tra più esecuzioni dell'applicazione. –

+3

Nessun HSQLDB * può * essere eseguito come un DB in memoria, ma è anche possibile conservare i dati su disco (in pratica è solo un'impostazione di configurazione). – Daff

4

Un'altra alternativa sarebbe SQLite.

Hibernate and SQLite

+0

Esiste una versione Java-Pure di SQLite? O la versione nativa è abbastanza facile da implementare? – Thilo

+0

Ce n'è uno sotto http://sqljet.com/ o se non ti piace questo, puoi utilizzare il seguente driver JDBC: http://www.zentus.com/sqlitejdbc/ – Aurril

1

si può anche provare Firebird

c'è una versione embedded e una versione in modalità client/server

Qui un collegamento per il letargo supported database

+0

Direi di no. firebird è grande, ma non così leggero.Un firebird incorporato moderno con i file minimi richiesti di base è arrivato a 6mb senza db stesso – nawfal