同じメモリ内データベースにアクセスするアプリケーション内でH2 Web サーバーを実行できます。SquirrelSQLなどの汎用 JDBC クライアントを使用して、サーバー モードで実行されている H2 にアクセスすることもできます。
アップデート:
Server webServer = Server.createWebServer("-web,-webAllowOthers,true,-webPort,8082").start();
Server server = Server.createTcpServer("-tcp,-tcpAllowOthers,true,-tcpPort,9092").start();
jdbc:h2:mem:foo_db
これで、同じプロセス内で URL経由でデータベースに接続したり、foo_db
を使用してデータベースを参照したりできますlocalhost:8082
。両方のサーバーを閉じることを忘れないでください。参照:メモリ モードの H2 データベースにはコンソールからアクセスできません。
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>
ところで、データベースの内容を手動でピークするのではなく、アサーションのみに依存する必要があります。これは、トラブルシューティングにのみ使用してください。
注意: Spring テスト フレームワークを使用する場合、実行中のトランザクションによって行われた変更は表示されず、このトランザクションはテストの直後にロールバックされます。