您可以在将访问相同内存数据库的应用程序中运行 H2 web server。您还可以使用任何通用 JDBC 客户端(例如 SquirrelSQL)访问在服务器模式下运行的 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 连接到您的数据库,或使用localhost:8082 浏览foo_db 数据库。记得关闭两台服务器。另见:H2 database in memory mode cannot be accessed by Console。
你也可以使用 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 测试框架,您将不会看到正在运行的事务所做的更改,并且该事务将在测试后立即回滚。