概述h2數(shù)據(jù)庫
h2database為我們提供了十分輕量,十分快捷方便的內(nèi)嵌式數(shù)據(jù)庫
H2是一個用Java開發(fā)的嵌入式數(shù)據(jù)庫,它本身只是一個類庫,可以直接嵌入到應(yīng)用項目中。
可以同應(yīng)用程序打包在一起發(fā)布
它的另一個用途是用于單元測試。啟動速度快,而且可以關(guān)閉持久化功能,每一個用例執(zhí)行完隨即還原到初始狀態(tài)
提供JDBC訪問接口,提供基于瀏覽器的控制臺,可以執(zhí)行sql
免費,開源,夠快
還方便了程序剛開始dao層單元測試測試,不需要搭建oracle,不需要加載mysql,快速測試寫的dao
SpringBoot整合測試
<!--h2數(shù)據(jù)庫--> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <scope>runtime</scope> </dependency>
yml配置
spring: datasource: #配置h2數(shù)據(jù)庫的連接地址 # Embedded 嵌入式 # Remote (client/server) 遠程連接 # In-Memory 內(nèi)存 url: jdbc:h2:file:F:/java/h2/db/test #通過H2 Database Engine先創(chuàng)建好數(shù)據(jù)庫https://h2database.com/html/main.html #配置JDBC Driver driver-class-name: org.h2.Driver #配置數(shù)據(jù)庫用戶名 username: root #配置數(shù)據(jù)庫密碼 password: 123456 #進行該配置,程序開啟時就會啟動h2 web consloe。當(dāng)然這是默認的,如果你不想在啟動程序時啟動h2 web consloe,那么就設(shè)置為false。 h2: console: enabled: true #進行該配置,你就可以通過YOUR_URL/h2訪問h2 web consloe。YOUR_URL是你程序的訪問URl。默認為/h2-console path: /h2 # 進行該配置后,h2 web consloe就可以在遠程訪問了。否則只能在本機訪問。 settings: web-allow-others: true
數(shù)據(jù)庫支持多種連接模式和連接設(shè)置,主要有 Embedded 嵌入式,Remote (client/server) 遠程連接,In-Memory 內(nèi)存
Embedded 嵌入式
URL jdbc:h2:?/test表示數(shù)據(jù)庫存儲在用戶主目錄中以“ test”開頭的文件中。 支持絕對位置,如jdbc:h2:/data/db/test。 在嵌入式模式下,數(shù)據(jù)庫與應(yīng)用程序以相同的過程運行。 任何時候都只能有一個進程訪問數(shù)據(jù)庫。 如果您擁有權(quán)限,則不存在的數(shù)據(jù)庫將自動創(chuàng)建。 形式為jdbc:h2:./data/test的URL相對于當(dāng)前工作目錄(啟動應(yīng)用程序的目錄)。 建議使用相對于?或絕對位置的位置。
Remote (client/server) 遠程連接
URL jdbc:h2:tcp//localhost/?/test表示通過TCP / IP連接到此計算機上運行的H2 TCP服務(wù)器,并在用戶主目錄中打開一個名為test的數(shù)據(jù)庫。 必須首先啟動服務(wù)器。 任意數(shù)量的客戶端都可以連接到同一數(shù)據(jù)庫。 適用與嵌入式數(shù)據(jù)庫相同的位置規(guī)則。
In-Memory 內(nèi)存
URL jdbc:h2:mem:test意味著打開一個名為“test”的內(nèi)存數(shù)據(jù)庫。數(shù)據(jù)不持久,當(dāng)最后一個數(shù)據(jù)庫連接關(guān)閉時,數(shù)據(jù)會丟失。多個線程可以訪問同一個數(shù)據(jù)庫,但是數(shù)據(jù)只能在同一個進程中可見。