Hibernate supporta completamente SQLite

Jboss Hibernate non dice nulla sul supporto per SQLite –

https://community.jboss.org/wiki/SupportedDatabases2

E lo stesso è menzionato nel seguito SO:

Hibernate + SQLite + Netbeans

Puoi per favore evidenziare su questo. Voglio utilizzare SQLite incorporato con ibernazione per l’applicazione desktop swing.

Sto anche valutando Derby (JavaDB) in quanto può anche essere incorporato e fa parte del jdk.

Poiché SQLite è un database incorporato per ambienti C-like, scritto in C e quindi compilato in codice nativo, le modifiche che Hibernate (o qualsiasi ORM) supporterà non sono molto elevate. Java è multipiattaforma e sarebbe un po ‘strano avere una dipendenza dipendente dalla piattaforma. Su Android, viene utilizzato SQLite, ma la piattaforma fornisce un driver JDBC per questo.

Di solito, i binari di Windows sono compatibili su diverse versioni di Windows, a condizione che l’architettura rimanga invariata. Se guardi la pagina di download di SQLite noterai che c’è un binario di Windows preinstallato a 32 bit. Questo può essere utilizzato su quasi tutte le versioni di Windows (tranne Windows RT, forse), ma non è ansible utilizzarlo su Linux o OS X. Per utilizzare SQLite da Java, è necessario includere il binario corretto per il sistema operativo specifico / architettura, rendendo effettivamente dipendente dalla piattaforma di un’applicazione Java. Questo è qualcosa che di solito non vuoi.

Se stai creando un’applicazione desktop in Swing e vuoi utilizzare un database incorporato, il mio suggerimento sarebbe quello di utilizzare un database incorporato Java, come H2 , HSQL o Derby . Quest’ultimo è anche fornito con Oracle Java come JavaDB . Tutti sono supportati come dialetti in letargo (per un elenco completo di dialetti, vedi le classi di dialetto: https://github.com/hibernate/hibernate-orm/tree/master/hibernate-core/src/main/java/org/hibernate / dialetto )

Come indicato di seguito da @akostadinov, potrebbero esserci altri fattori da considerare, ad esempio il fatto che SQLite sia scritto in codice nativo e quindi possa avere prestazioni migliori. Alla fine, l’unico che può decidere quale database è il migliore è colui che sta costruendo il sistema.

Ci sono molti dialetti SQLite là fuori.

Hibernate 3:

https://github.com/kemitix/sqlite-dialect

 net.kemitix sqlite-dialect 0.1.0  

Configurazione di ibernazione:

 hibernate.dialect = org.hibernate.dialect.SQLiteDialect 

Hibernate 4:

https://github.com/EnigmaBridge/hibernate4-sqlite-dialect

  com.enigmabridge hibernate4-sqlite-dialect 0.1.2  

Configurazione di ibernazione:

 hibernate.dialect = com.enigmabridge.hibernate.dialect.SQLiteDialect 

Nota: sono autore di questo repository. Basato sul repository di gwenn .

Hibernate 5:

https://github.com/gwenn/sqlite-dialect/

Non ancora aggiunto al repository centrale di Maven. L’autore lavora con il team di Hibernate per integrarlo direttamente con Hibernate. È tracciato in questo numero .

Nel frattempo puoi usare https://jitpack.io/

Aggiungi repository jitpack:

   jitpack.io https://jitpack.io   

Aggiungi dipendenza:

  com.github.gwenn sqlite-dialect master  

Configurazione di ibernazione:

 hibernate.dialect = org.hibernate.dialect.SQLiteDialect 

Se è necessario utilizzare SQLite con Hibernate per qualsiasi motivo, è necessario un dialetto personalizzato. Sembra che ci siano un paio di implementazioni che girano sul web.

Ho provato questo: https://github.com/gwenn/sqlite-dialect che ha funzionato per me con Hibernate 3 (credo che abbia bisogno di alcuni aggiornamenti per Hibernate 4). Nota che dovrai compilare il codice da solo e quindi impostare la proprietà di configurazione hibernate.dialect come org.hibernate.dialect.SQLiteDialect .

Altre implementazioni che ho trovato: http://code.google.com/p/hibernate-sqlite/ e https://gist.github.com/virasak/54436 .

SQLite è molto indulgente sulla syntax SQL per quanto ho esperienza, quindi potrebbe funzionare. Non ho usato SQLite estesamente con la sospensione, ma ho provato ad usarlo con infinispan con un certo successo. Il driver jdbc SQLite di serie che ho trovato come il migliore consigliato, manca di alcuni dei metodi dello standard JDBC, quindi ho dovuto correggerlo per farlo funzionare.

Penso che puoi provarlo con ibernazione e vedere se funziona. Potrebbe aiutarti a vedere cosa ho fatto per farlo funzionare con infinispan: https://issues.jboss.org/browse/ISPN-2980

So che questa non è la risposta esatta che vorresti vedere, ma ho deciso di rispondere perché penso ci siano poche possibilità a chiunque altro di rispondere in modo più utile. Almeno quando cercavo più informazioni al momento non riuscivo a trovarlo.