spring boot 2.0 h2配置

h2是一种内存数据库,可以方便的整合进spring-boot项目内。

application.properties

#配置数据库连接地址
  spring.datasource.primary.jdbc-url=jdbc:h2:file:./h2/code-generator;AUTO_SERVER=TRUE;DB_CLOSE_ON_EXIT=FALSE
  #配置数据库驱动
  spring.datasource.primary.driver-class-name=org.h2.Driver
  #配置数据库用户名
  spring.datasource.primary.username=root
  #配置数据库密码
  spring.datasource.primary.password=root
  #配置能远程访问
  spring.h2.console.settings.web-allow-others=true
  #配置访问地址
  spring.h2.console.path=/h2-console
  #配置项目启动 h2就启动
  spring.h2.console.enabled=true

jbdc-url的配置:

  • file:./h2/code-generator; 表示在项目根路径下保存数据库文件,数据库的名称为code-generator
  • AUTO_SERVER=true 启动自动混合模式,允许开启多个连接,该参数不支持在内存中运行模式
  • DB_CLOSE_ON_EXIT 当虚拟机退出时并不关闭数据库

h2控制台

访问http://localhost:8089/h2-console,页面如下图

其中JDBC URL输入框内输入配置文件内jdbc-url的前半部分,User Name和Password是我们配置文件内配置的username和password。进入后就可以看到我们的数据库code-generator和它下面的表了。

需要注意的是如果按照官方示例:jpa-multiple-datasources内的方式配置内存数据库,如下

return new EmbeddedDatabaseBuilder().//
				setType(EmbeddedDatabaseType.H2).//
				setName("customers").//
				build();

等价于

spring.datasource.primary.jdbc-url=jdbc:h2:mem:customers;
spring.datasource.primary.username=sa
spring.datasource.primary.password=
  1. jdbc:h2:file:E:/data/H2 表示将初始化的数据和H2 Console控制台执行的数据保存到E盘下data/H2文件夹中,即使应用重启,数据不会丢失。
  2. jdbc:h2:/testdatabase这里就需要说明一下””这个符号在window操作系统下代表什么意思了,在Window操作系统下,”~”这个符号代表的就是当前登录到操作系统的用户对应的用户目录,所以testdatabase数据库对应的文件存放在登录到操作系统的用户对应的用户目录当中,比如我当前是使用Administrator用户登录操作系统的,所以在”C:\Documents and Settings\Administrator.h2”目录中就可以找到test数据库对应的数据库文件了
    持久化本地的问题:由于本地已经存在表,而应用每次启动都会创建表,导致下次启动时会启动报错。除非手动注掉application.properties中新建表的配置,或则删除本地对应目录的文件。
  3. jdbc:h2:mem:soa_service_api、jdbc:h2:mem:~/.h2/url类似与这种配置的,表示将初始化和h2 console控制台上操作的数据保存在内存(mem-memory)
  4. 保存到内存的问题:由于每次重启应用内存释放掉后,对应的数据也会消失,当然初始化的表+初始化数据就都没了。然后重启会从data.sql中重新初始化数据,启动正常。但是你通过h2