H2H2 and HSQLDB will cache the tables in memory, even if you use "persistent" tables.
In HSQLDB you can control the amount of memory that is used to hold table data, using the SET FILES CACHE SIZE
statement. I think H2 has something similar.
So if you create cached tables and make the data cache large enough you will wind up with tables stored on disk but held in memory.