È possibile eseguire il server Web H2 all'interno dell'applicazione che accederà allo stesso database in memoria. È inoltre possibile accedere a H2 in esecuzione in modalità server utilizzando qualsiasi client JDBC generico come SquirrelSQL .
AGGIORNARE:
Server webServer = Server.createWebServer("-web,-webAllowOthers,true,-webPort,8082").start();
Server server = Server.createTcpServer("-tcp,-tcpAllowOthers,true,-tcpPort,9092").start();
Ora puoi connetterti al tuo database tramite jdbc:h2:mem:foo_db
URL all'interno dello stesso processo o navigare nel foo_db
database usando localhost:8082
. Ricorda di chiudere entrambi i server. Vedi anche: Il database H2 in modalità memoria non è accessibile dalla console .
Puoi anche usare Spring:
<bean id="h2Server" class="org.h2.tools.Server" factory-method="createTcpServer" init-method="start" destroy-method="stop" depends-on="h2WebServer">
<constructor-arg value="-tcp,-tcpAllowOthers,true,-tcpPort,9092"/>
</bean>
<bean id="h2WebServer" class="org.h2.tools.Server" factory-method="createWebServer" init-method="start" destroy-method="stop">
<constructor-arg value="-web,-webAllowOthers,true,-webPort,8082"/>
</bean>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" depends-on="h2Server">
<property name="driverClass" value="org.h2.Driver"/>
<property name="jdbcUrl" value="jdbc:h2:mem:foo_db"/>
</bean>
A proposito, dovresti dipendere solo dalle affermazioni e non dalla sbirciatina manuale del contenuto del database. Usalo solo per la risoluzione dei problemi.
NB se utilizzi il framework di test Spring non vedrai le modifiche apportate da una transazione in esecuzione e questa transazione verrà annullata immediatamente dopo il test.