views:

231

answers:

2

For unit tests, demonstrations and Hibernate tasks I would like to use a small and simple Java database like Derby / Java DB or HSQLDB, which can be called from within Maven.

So far I have not found a Maven plugin which can download and launch Java DB (which is my favorite at the moment) or something similar.

+2  A: 

An simple setup for unit tests is to start hsqldb in memory:

db.connection.driver_class=org.hsqldb.jdbcDriver
db.connection.url=jdbc:hsqldb:mem:aname
db.connection.username=sa
db.connection.password=
hibernate.dialect=org.hibernate.dialect.HSQLDialect

No start and stop needed. The JDBC driver will "start" the database.

You could use that for demonstrations, too. If you're initializing the database while the applications starts.

The database setup can be done with hibernate.hbm2ddl.auto.


Edit by kdgregory:

To have Maven include HSQLDB in the dependencies for the test phase only, use this in your POM:

<dependency>
    <groupId>hsqldb</groupId>
    <artifactId>hsqldb</artifactId>
    <version>1.8.0.7</version>
    <scope>test</scope>
</dependency>
Thomas Jung
+1 it works like a charm :)
mjustin
A: 

I've no idea whether it supports what you need, but SQLite is so immensely popular that it seems to have integration plugins with about anything. Check it out.

Vilx-
A quick search did not find SQLite available from a Maven repository - so Java DB / Derby and HSQLDB are still the only ones which can be used just by adding a <dependency> entry in the Maven project.
mjustin