To keep the independency between the JUnit tests, I need to create the database at the beginning of every test, and destroy it at the end of every test.
The database
You should probably use JPA or Spring features, but just for completeness:
On the database side, H2 supports running init scripts when opening the database as follows:
jdbc:h2:mem:test;INIT=runscript from '~/create.sql'
or
jdbc:h2:mem:test;INIT=runscript from 'classpath:/com/acme/create.sql'
And when you close in-memory databases (like the example above), the data is dropped. Or you could run the SQL statement drop all objects.