views:

273

answers:

4

I am developing a Java Desktop Application and want a light database that can be used with Hibernate and that can be packed with an application.

I was going to use Derby database. It's size is near 2 MB. But before that I wanted to have views of experts on SO.

Will it work with Hibernate?

Actually, I am new to Hibernate and was studying that it requires a Dialect for a database so Is Hibernate has dialect for Derby?

+7  A: 

I would recommend HSQLDB. It is small and fast and runs fine with Hibernate. Hibernate has a dialect for the Derby DB as well (haven't used it though and I think it is not officially supported by Hibernate yet).

Daff
I read about HSQLDB. They say that it is in-memory database which doesn't need to be installed and configured. If it remains in the memory, then It should consume a lot of memory for the database server itself and a lot of memory for the data which we will insert into it. May be I interpreted the above statement as wrong but I didn't find much info on the HSQLDB site. I found the above info in Hibernate tutorials. Correct me if am wrong? Also, if it remains in memory, then how the data persist between mulitple runs of the application.
Yatendra Goel
No HSQLDB *can* run as an in memory DB but you can also persist your data on disk (it is basically just a configuration setting).
Daff
+4  A: 

Another Alternative would be SQLite.

Hibernate and SQLite

Aurril
Is there a pure-Java version of SQLite? Or is the native version easy enough to deploy?
Thilo
There is one under http://sqljet.com/ or if you don't like this one you can use the following JDBC Driver: http://www.zentus.com/sqlitejdbc/
Aurril
+1  A: 

You can also try Firebird

There is an embedded version and a client/server mode version

Here an link to hibernate supported database

Hugues Van Landeghem
+8  A: 

JavaDB (Sun's supported distribution of the open source Apache Derby), HSQLDB (not very active) and H2 (the successor of HSQLDB) are all 100% Java embeddable database engines and can all be used with Hibernate (i.e. there are dialect for them). Refer to this page and this one.

HSQLDB has the smallest footprint (~700 KB) of all of them. But feature wise (see this comparison), H2 is the clear winner and its footprint (~1 MB) is still smaller than Derby's one (~2 MB).

The final choice depends on what you need but H2 is a good compromise of features and size (in other words, a big competitor). Have a look at the mentioned comparison.

Pascal Thivent
Very informative answer.. I am going to use H2 but before that below are few quick questions: 1. Can I embed H2 in my commercial application for free (I checked the site and found that it's free but still want to confirm with you)2. What's your view about SQLLite and Firebird against H2
Yatendra Goel
@Yatendra 1. Yes you can (http://www.h2database.com/html/license.html) 2. Firebird and SQLite are good products but not 100% Java (i.e. can't run in the same Java process) and this would make things more complex. I'd go for H2.
Pascal Thivent