For unit tests (call them integration tests if you want) I have configured an embedded database in my Spring config like so:
Specify parameter in JDBC url jdbc:h2:~/test;DB_CLOSE_ON_EXIT=FALSE
Also for in-memory test database I suggest you to add DB_CLOSE_DELAY=-1
, like this:
jdbc:h2:mem:alm;MODE=Oracle;DB_CLOSE_DELAY=-1
To add JDBC connection url to embedded-dababase
change it to:
<bean id="dataSource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
<property name="driverClass" value="org.h2.Driver"/>
<property name="url" value="jdbc:h2:mem:test;MODE=Oracle;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE"/>
<property name="username" value="sa"/>
<property name="password" value=""/>
</bean>
<jdbc:initialize-database data-source="dataSource" ignore-failures="DROPS">
<jdbc:script location="classpath:schema_h2.sql" />
</jdbc:initialize-database>
I had the same problem, but it was because I forgot to add the annotation @Entity on one of my entities. I add it and it work now ! I hope this helps someone.
I had the same issue as Michael Piefel's one, and tried to implement the solution that Michail Nikolaev explained.
but it did not work, somehow spring-batch, then, where are the metadata JOB_* tables are.
So, as the version of spring-jdbc
used by my application is 3.0.5 and increasing the spring-framework
one enters in conflict with dwr
(i use it in my app) it's a geo
localisation based on spring, dwr
and gmaps api
.
I downloaded the spring-jdbc 4.0.3
release and get from it the H2EmbeddedDatabaseConfigurer.class
who has DB_CLOSE_ON_EXIT=FALSE
by default and replace with it the one on the spring-jdbc 3.0.5
Relase and deploy-it in the war file and it works, the shutdown of the VM
didn't provoque the closing of the in memory database.
Hope this unusual solution helps if other people as me wouldn't be able to implement the other solution.