如果你希望在 Spring Boot 啟用 H2 數據庫的話,這篇文章適合你進行了解。
概述
在這個指南中,我們將會考慮如何在 Spring Boot 中使用 H2 數據庫。
與其他數據庫相似,Spring Boot 生態系統中能夠完全支持 H2 數據庫
依賴(Dependencies)
讓我們首先需要定義 H2 數據庫依賴:https://search.maven.org/search?q=g:com.h2database
同時我們還需要使用 spring-boot-starter-data-jpa 依賴:https://search.maven.org/search?q=a:spring-boot-starter-data-jpa
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>
2.1
.
4
.RELEASE</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
<version>
1.4
.
199
</version>
</dependency>
|
與其他的 Spring Boot 管理相似,通常你不需要為你使用的 Spring Boot 指定版本號。
數據庫配置
在默認的情況下,Spring Boot 將會配置 H2 數據庫使用 sa 為用戶名,用戶名密碼為空。
當然你可以可以通過修改 application.properties 文件中配置文件來為你的 H2 數據庫指定登錄的用戶名和密碼。
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
|
如果你使用的 H2 基於內存的數據庫的話,你所有存儲在內存中的數據將會在你重新啟動服務器的時候完全丟失。
如果你希望避免這個情況的話,你可以使用基於文件存儲的數據庫,你可以通過下面的參數修改為基於文件使用的數據庫,修改 spring.datasource.url: 參數為
spring.datasource.url=jdbc:h2:file:/data/demo
|
文件系統使用的路徑為絕對路徑,有關 H2 數據庫配置的方法,請參考 http://www.h2database.com/html/features.html#connection_modes 頁面中的內容。
數據庫選項
Spring Boot 整合 H2 提供的增刪改查(CRUD)與普通數據庫的增刪改查是相似的。請參考 https://www.baeldung.com/persistence-with-spring-series 頁面中獲得更多的有關數據持久化相關的信息。
在這里,請將 data.sql 文件添加到 src/main/resources 目錄下面:
DROP
TABLE
IF EXISTS billionaires;
CREATE
TABLE
billionaires (
id
INT
AUTO_INCREMENT
PRIMARY
KEY
,
first_name
VARCHAR
(250)
NOT
NULL
,
last_name
VARCHAR
(250)
NOT
NULL
,
career
VARCHAR
(250)
DEFAULT
NULL
);
INSERT
INTO
billionaires (first_name, last_name, career)
VALUES
(
'Aliko'
,
'Dangote'
,
'Billionaire Industrialist'
),
(
'Bill'
,
'Gates'
,
'Billionaire Tech Entrepreneur'
),
(
'Folrunsho'
,
'Alakija'
,
'Billionaire Oil Magnate'
);
|
Spring Boot 將會在系統應用程序啟動后,將會自動選擇 data.sql 文件然后在我們的 H2 數據庫中進行配置。
這種方式是對使用的數據庫進行進行測試的比較好的辦法。
訪問 H2 控制台
H2 數據庫有一個嵌入式 GUI 控制台能夠讓你對數據庫的內容進行查詢和運行 SQL。
在默認情況下,H2 的控制台沒有嵌入到 Spring 中。所以你需要對這個控制台工具進行啟用,請在 application.properties 文件中添加下面的參數:
spring.h2.console.enabled=
true
|
在啟用上面的參數后,如果你啟用了 Spring Boot 應用程序,你可以導航到 http://localhost:8080/h2-console界面中,在這個界面中首先將會顯示登錄界面。
在登錄界面中適用的登錄信息是你在 application.properties 文件中指定的登錄信息。
一旦你成功連接到控制台后,我們將會看到一個完整的控制台界面。
在這個完整的控制台界面中的作出,你將會看到 H2 數據庫中所有的數據表,同時還包含有一個文本對話框中包含了可以運行的 SQL 查詢:
在這個 Web 的控制台界面中,具有自動完成 SQL 關鍵字的功能。這個功能能夠讓給控制台更加輕量的運行並且具有 SQL 關鍵字幫助的功能,能夠讓你在文本對話框中直接運行 SQL 腳本。
更進一步,我們將會在 application.properties 中配置更多的參數能夠滿足你的對當前項目的需求:
spring.h2.console.path=/h2-console
spring.h2.console.settings.trace=
false
spring.h2.console.settings.web-allow-others=
false
|
在上面的代碼中,我們設置了 H2 的控制台訪問控制台的 URL 為: /h2-console,這個鏈接是針對你當前項目運行的服務器地址和端口的相對地址。
例如你當前服務器運行的 URL 為 http://localhost:9001 那么 H2 控制台訪問的地址為 http://localhost:9001/h2-console。
同時我們設置了 spring.h2.console.settings.trace 參數為 false,這樣我們能夠避免在系統控制台中輸出 trace 級別的日志信息。
通過設置 spring.h2.console.settings.web-allow-others=false 參數,我們能夠禁止遠程 Web 訪問 H2 數據庫的信息。
結論
H2 是完全與 Spring Boot 兼容的,通過這篇文章,你能夠了解如何使用 H2 控制台來管理整治運行的數據庫。
有關完整的代碼情況參考我們提交到 GitHub 中的代碼示例:https://github.com/cwiki-us-demo/java-tutorials/tree/master/persistence-modules/spring-boot-persistence-h2-console 中的內容。


