2010-03-12 7 views
14

Estoy desarrollando una aplicación de escritorio Java y quiero un light database que se pueda usar con Hibernate y que se pueda empaquetar con una aplicación.La base de datos más liviana se debe empaquetar con una aplicación

Iba a usar la base de datos Derby. Su tamaño es cerca de 2 MB. Pero antes de eso quería tener puntos de vista de expertos sobre SO.

¿Funcionará con Hibernate?

En realidad, soy nuevo en Hibernate y estaba estudiando que requiere una Dialect de una base de datos por lo que se Hibernate tiene dialecto de Derby?

+0

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

+0

Ver http://stackoverflow.com/questions/271319/lightweight-sql-database- which-doesnt-require-installation para equivalentes en .net world – nawfal

Respuesta

17

JavaDB (la distribución compatible con Sun de el código abierto Apache Derby), HSQLDB (no muy activo) y H2 (el successor of HSQLDB) son todos los motores de base de datos integrables 100% Java y pueden todos utilizarse con Hibernate (es decir, hay dialecto para ellos). Consulte this page y this one.

HSQLDB tiene la huella más pequeña (~ 700 KB) de todos ellos. Pero en función de las características (ver this comparison), H2 es el claro ganador y su huella (~ 1 MB) es aún menor que la de Derby (~ 2 MB).

La elección final depende de lo que necesite, pero H2 es un buen compromiso de características y tamaño (en otras palabras, un gran competidor). Eche un vistazo a la comparación mencionada.

+0

Respuesta muy informativa. Voy a utilizar H2 pero antes de eso hay algunas preguntas rápidas: 1. ¿Puedo incrustar H2 en mi aplicación comercial de forma gratuita (I revisó el sitio y descubrió que es gratis, pero aún desea confirmarlo con usted) 2. ¿Cuál es su punto de vista sobre SQLLite y Firebird contra H2 –

+4

@Yatendra 1. Sí, puede (http://www.h2database.com/html/license.html) 2. Firebird y SQLite son buenos productos, pero no 100% Java (es decir, puede no se ejecuta en el mismo proceso de Java) y esto haría las cosas más complejas. Yo iría por H2. –

+0

Me encanta, es todo lo que necesito – RayanFar

7

Recomendaría HSQLDB. Es pequeño y rápido y funciona bien con Hibernate. Hibernate también tiene un dialecto para Derby DB (aunque no lo he usado y creo que aún no es oficialmente compatible con Hibernate).

+0

Leo sobre HSQLDB. Dicen que es una base de datos en memoria que no necesita ser instalada y configurada. Si permanece en la memoria, debe consumir mucha memoria para el servidor de la base de datos y mucha memoria para los datos que insertamos en ella. Puede ser que interpreté la declaración anterior como incorrecta, pero no encontré mucha información en el sitio de HSQLDB. Encontré la información anterior en los tutoriales de Hibernate. Corrígeme si estoy equivocado? Además, si permanece en la memoria, entonces cómo los datos persisten entre múltiples ejecuciones de la aplicación. –

+3

No HSQLDB * puede * ejecutarse como una base de datos en la memoria, pero también puede conservar sus datos en el disco (básicamente es solo una configuración). – Daff

4

Otra alternativa sería SQLite.

Hibernate and SQLite

+0

¿Hay una versión de Java puro de SQLite? ¿O es la versión nativa lo suficientemente fácil de implementar? – Thilo

+0

Hay uno en http://sqljet.com/ o si no te gusta este, puedes utilizar el siguiente controlador JDBC: http://www.zentus.com/sqlitejdbc/ – Aurril

1

También puede probar Firebird

Existe una versión integrada y una versión en modo cliente/servidor

Aquí un enlace a hibernar supported database

+0

Diría que no. Firebird es genial, pero no tan ligero.Un Firebird incrustado moderno con archivos requeridos mínimo básico llegó abt 6mb sin db sí mismo – nawfal

Cuestiones relacionadas