使用嵌入内存中的数据库开发应用程序往往很方便。显然,内存数据库不提供持久存储;当程序启动时需要填充数据库,并且准备在程序结束时丢弃数据。
“How-to”章节中包含如何初始化数据库的一节
Spring Boot可以自动配置内置的H2,HSQL和Derby数据库。您不需要提供任何连接URL,只需包含一个到您要使用的内置数据库的构建依赖。
如果您在测试中使用这个功能,您可能会注意到,不管使用多少个程序上下文,整个测试套件都会复用同一个的数据库。如果想确保每个上下文都有一个独立的内置数据库,您应该将
spring.datasource.generate-unique-name
设为true
。
例如,典型的POM依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>runtime</scope>
</dependency>
对于一个自动配置的内置数据库,您需要一个到
spring-jdbc
的依赖。在这个例子中,它是通过spring-boot-starter-data-jpa
传递引入的。
无论出于何种原因,如果您确实为内置数据库配置了连接URL,那么应当注意确保数据库的自动关闭被禁用。如果您使用的是H2,则应该使用
DB_CLOSE_ON_EXIT=FALSE
来执行此操作。如果您使用的是HSQLDB,则应确保没有使用shutdown=true
。禁用数据库的自动关闭使得Spring Boot能够控制数据库何时关闭,从而确保在不再需要访问数据库时能将其关闭。