在SpringBoot中集成H2數(shù)據(jù)庫的完整指南
引言
Spring Boot是一個簡化企業(yè)級Java應(yīng)用程序開發(fā)的強大框架。H2數(shù)據(jù)庫是一個輕量級的、開源的SQL數(shù)據(jù)庫,非常適合用于開發(fā)和測試。本文將指導(dǎo)您如何在Spring Boot應(yīng)用程序中集成H2數(shù)據(jù)庫,并探索一些高級配置選項。
依賴關(guān)系
首先,我們需要在項目的pom.xml文件中添加H2數(shù)據(jù)庫和Spring Data JPA的依賴關(guān)系:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
數(shù)據(jù)庫配置
Spring Boot默認配置應(yīng)用程序連接到一個內(nèi)存存儲的H2數(shù)據(jù)庫,用戶名為sa,密碼為空。我們可以通過在application.properties文件中添加以下屬性來自定義這些設(shè)置:
spring.datasource.url=jdbc:h2:mem:testdb spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password=password spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
或者,我們也可以使用application.yml文件進行配置:
spring:
datasource:
url: jdbc:h2:mem:mydb
username: sa
password: password
driverClassName: org.h2.Driver
jpa:
database-platform: org.hibernate.dialect.H2Dialect
數(shù)據(jù)庫持久化
默認情況下,H2數(shù)據(jù)庫的內(nèi)存存儲在應(yīng)用程序重啟后會導(dǎo)致數(shù)據(jù)丟失。為了解決這個問題,我們可以將數(shù)據(jù)庫存儲為文件:
spring.datasource.url=jdbc:h2:file:/data/demo
或者在YAML文件中:
spring:
datasource:
url: jdbc:h2:file:/data/demo
數(shù)據(jù)庫操作
在Spring Boot中執(zhí)行CRUD操作與在其他SQL數(shù)據(jù)庫中類似。我們可以使用JPA倉庫接口和實體類來管理數(shù)據(jù)庫操作。
初始化數(shù)據(jù)源
我們可以使用SQL腳本來初始化數(shù)據(jù)庫。在src/main/resources目錄下創(chuàng)建一個SQL文件,填充一些示例數(shù)據(jù):
INSERT INTO countries (id, name) VALUES (1, 'USA'); INSERT INTO countries (id, name) VALUES (2, 'France'); INSERT INTO countries (id, name) VALUES (3, 'Brazil'); INSERT INTO countries (id, name) VALUES (4, 'Italy'); INSERT INTO countries (id, name) VALUES (5, 'Canada');
Spring Boot會自動運行這個文件來初始化數(shù)據(jù)庫。我們可以通過將spring.sql.init.mode屬性設(shè)置為never來禁用這種默認行為。此外,還可以配置多個SQL文件來加載初始數(shù)據(jù)。
Hibernate和data.sql
默認情況下,data.sql腳本在Hibernate初始化之前執(zhí)行。這使得基于腳本的初始化與Flyway和Liquibase等其他數(shù)據(jù)庫遷移工具保持一致。當(dāng)我們每次重新創(chuàng)建Hibernate生成的模式時,我們需要設(shè)置一個額外的屬性:
spring.jpa.defer-datasource-initialization=true
這會修改默認的Spring Boot行為,并在Hibernate生成模式之后填充數(shù)據(jù)。
訪問H2控制臺
H2提供了一個嵌入式的GUI控制臺,用于瀏覽數(shù)據(jù)庫內(nèi)容和運行SQL查詢。要啟用H2控制臺,在application.properties中添加以下屬性:
spring.h2.console.enabled=true
或者在application.yml中:
spring:
h2:
console:
enabled: true
啟動應(yīng)用程序后,訪問http://localhost:8080/h2-console即可使用H2控制臺。在登錄頁面使用配置的數(shù)據(jù)庫URL和憑據(jù)進行登錄。
進一步配置H2控制臺
我們可以通過在項目的application.properties中指定以下屬性來進一步配置控制臺:
spring.h2.console.path=/h2-console spring.h2.console.settings.trace=false spring.h2.console.settings.web-allow-others=false
或者在YAML配置中:
spring:
h2:
console:
path: /h2-console
settings:
trace: false
web-allow-others: false
H2數(shù)據(jù)庫URL選項
H2數(shù)據(jù)庫URL提供了多種選項以進一步自定義數(shù)據(jù)庫行為。例如:
DB_CLOSE_DELAY=-1:確保在JVM運行期間數(shù)據(jù)庫保持打開狀態(tài)。DB_CLOSE_ON_EXIT=FALSE:即使JVM關(guān)閉,數(shù)據(jù)庫也保持打開狀態(tài)。AUTO_RECONNECT=TRUE:允許在連接丟失時自動重新連接。MODE=PostgreSQL:將H2數(shù)據(jù)庫設(shè)置為PostgreSQL兼容模式。
示例配置:
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;AUTO_RECONNECT=TRUE;MODE=PostgreSQL;
結(jié)論
H2數(shù)據(jù)庫與Spring Boot的集成非常流暢,提供了一個輕量級且功能豐富的解決方案,非常適合開發(fā)和測試。通過本文的指南,您應(yīng)該能夠輕松地在Spring Boot應(yīng)用程序中集成H2數(shù)據(jù)庫,并利用其強大的功能。
以上就是在SpringBoot中集成H2數(shù)據(jù)庫的完整指南的詳細內(nèi)容,更多關(guān)于SpringBoot集成H2數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java整數(shù)與byte數(shù)組的轉(zhuǎn)換實現(xiàn)代碼
這篇文章主要介紹了java整數(shù)與byte數(shù)組的轉(zhuǎn)換實現(xiàn)代碼的相關(guān)資料,需要的朋友可以參考下2017-07-07
java實現(xiàn)統(tǒng)計字符串中字符及子字符串個數(shù)的方法示例
這篇文章主要介紹了java實現(xiàn)統(tǒng)計字符串中字符及子字符串個數(shù)的方法,涉及java針對字符串的遍歷、判斷及運算相關(guān)操作技巧,需要的朋友可以參考下2017-01-01
關(guān)于Scanner對象的輸入結(jié)束標記問題
這篇文章主要介紹了關(guān)于Scanner對象的輸入結(jié)束標記問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
一篇文章帶你學(xué)習(xí)JAVA MyBatis底層原理
近來想寫一個mybatis的分頁插件,但是在寫插件之前肯定要了解一下mybatis具體的工作原理吧,本文就詳細總結(jié)了MyBatis工作原理,,需要的朋友可以參考下2021-09-09
Spring元注解@HttpExchange聲明式調(diào)用HTTP
這篇文章主要介紹了Spring元注解@HttpExchange聲明式調(diào)用HTTP,Spring?Framework6和Spring?Boot3引入了聲明式HTTP客戶端@HttpExchange,通過接口注解簡化REST?API調(diào)用,核心注解包括@GetExchange、@PostExchange等對應(yīng)HTTP方法,支持路徑參數(shù)和請求體,需要的朋友可以參考下2025-10-10
JetBrains的IDEA編輯器自動配置的JDK版本下載目錄過程
文章說明Java安裝路徑為~/Library/Java/JavaVirtualMachines/ms-17.0.16,并分享配置經(jīng)驗,建議用戶根據(jù)實際需求調(diào)整環(huán)境變量,以確保Java版本正確運行2025-08-08
使用EasyExcel實現(xiàn)模板導(dǎo)出Excel數(shù)據(jù)并合并單元格
這篇文章主要為大家詳細介紹了如何使用EasyExcel實現(xiàn)模板導(dǎo)出Excel數(shù)據(jù)并合并單元格,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2026-03-03
springboot HandlerIntercepter攔截器修改request body數(shù)據(jù)的操作
這篇文章主要介紹了springboot HandlerIntercepter攔截器修改request body數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。2021-06-06

