The Oracle syntax you posted works well with the H2 database (I just tested it), so it seems H2 supports the Oracle syntax better than HSQLDB. On the other hand, what you probably do want to 'abstract away' in your tests is the UI, because UI testing is usually hard to automate. Probably such tests are also easier to write and maintain. This will ensure the tests are closer to the real world than if you try to 'abstract away' the database in your test. Use an in-memory / Java database for testing. The latter will need an access to the Oracle database, to execute "real" tests, but my main concern (and this is the purpose of this question) is that almost all of my unit tests are not run in isolation today. Note that I also want to separate unit tests from integration tests. However, my first step is to try to remove the Oracle connection by an in-memory database, and then I will use my Mockito knowledges to enhance the tests. I am aware that mocks and in-memory database are two separates points, and I will address them as soon as possible. So services tests also need an Oracle connection. The services layer does not use (yet) any mock objects to simulate the DAO. In my current application, we have the worst scenario: The DAO layer tests need an Oracle connection to be run. Then, on the service layer, I used Mockito to mock my DAO objects, in order to focus on the service test and not the whole applications (i.e. For DAO testing, I used hsqldb to execute database manipulations, such as CRUD. Some "basic" unit tests, which have nothing to do with DB. In the application where I used hsqldb, I had the following tests: Some information regarding my unit tests: Java 1.6, Spring 2.5, Oracle 10.g, Maven 2