您好,登錄后才能下訂單哦!
嵌入式數(shù)據(jù)庫(kù)H2的使用以及集成Spring Boot的操作示例,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
前面講一些Mybatis特性的時(shí)候總是要寫(xiě)一些例子演示給粉絲。用Mysql或者其他很大的數(shù)據(jù)庫(kù)太重了,因?yàn)橹皇莻€(gè)demo而已。當(dāng)然也可以使用docker來(lái)安裝。但是還是需要依賴(lài)一些東西。有沒(méi)有非常小巧而且便于攜帶的數(shù)據(jù)庫(kù),而且能滿(mǎn)足很小場(chǎng)景的數(shù)據(jù)庫(kù)。當(dāng)然有。今天介紹一種純java編寫(xiě)而且支持jdbc的嵌入式關(guān)系型數(shù)據(jù)庫(kù)H2。
H2數(shù)據(jù)庫(kù)的特點(diǎn):
非常快,開(kāi)源,支持JDBC API
嵌入式和服務(wù)器模式;內(nèi)存數(shù)據(jù)庫(kù)
基于瀏覽器的控制臺(tái)應(yīng)用程序
占用空間小,jar只有2MB大小
以上只是官網(wǎng)列出的特點(diǎn)。其實(shí)還有跨平臺(tái)的優(yōu)勢(shì),支持目前常見(jiàn)的大部分平臺(tái)。還兼容常見(jiàn)的主流關(guān)系型數(shù)據(jù)庫(kù),比如DB2、Oracle、MS SQL Server、Mysql、PostgreSQL、HSQLDB、Ignite、Derby等。
基于以上的特點(diǎn)。H2數(shù)據(jù)庫(kù)特別適用于快速構(gòu)建的小型應(yīng)用。尤其在應(yīng)用開(kāi)發(fā)中和單元測(cè)試中使用非常方便,而且節(jié)省系統(tǒng)資源。而且springboot的依賴(lài)池也收錄了H2數(shù)據(jù)庫(kù)。接下來(lái)我們通過(guò)springboot結(jié)合Mybatis來(lái)對(duì)H2數(shù)據(jù)庫(kù)進(jìn)行一些特性的講解演示。
springboot使用H2數(shù)據(jù)庫(kù)非常簡(jiǎn)單。集成BOM下的H2依賴(lài)就可以了。這里為了演示我們還引入了Mybatis。
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <dependency> <groupId>com.h3database</groupId> <artifactId>h3</artifactId> <scope>runtime</scope> </dependency>
當(dāng)然引入依賴(lài)還不夠我們還需要對(duì)其他參數(shù)進(jìn)行配置。當(dāng)然這些配置可以通過(guò)springboot的 application.yml(application.properties)來(lái)完成。我們知道H2支持像tomcat一樣內(nèi)嵌到springboot應(yīng)用中,也支持獨(dú)立的server進(jìn)程模式。通過(guò)不同的配置我們來(lái)演示一下。
內(nèi)嵌模式,就是把在應(yīng)用中引入H2,啟動(dòng)應(yīng)用的同時(shí),會(huì)把H2數(shù)據(jù)服務(wù)也啟動(dòng),應(yīng)用中既包含了H2數(shù)據(jù)庫(kù)的服務(wù)端,同時(shí)應(yīng)用又作為客戶(hù)端來(lái)連接H2數(shù)據(jù)庫(kù)。
內(nèi)存模式就是數(shù)據(jù)庫(kù)文件存在于內(nèi)存中,沒(méi)有持久化,當(dāng)應(yīng)用進(jìn)程關(guān)閉時(shí)數(shù)據(jù)庫(kù)與數(shù)據(jù)表會(huì)消失。為了獨(dú)立環(huán)境,我們利用springboot的profile特性來(lái)隔離不同模式的環(huán)境配置。我們定制一個(gè)名稱(chēng)為application-inner.yml
來(lái)測(cè)試內(nèi)嵌模式。配置如下:
spring: datasource: # 驅(qū)動(dòng) driver-class-name: org.h3.Driver # h3 內(nèi)存數(shù)據(jù)庫(kù) 內(nèi)存模式連接配置 庫(kù)名: mybatis url: jdbc:h3:mem:mybatis # 初始化數(shù)據(jù)表 DDL schema: classpath:sql/init.sql # 初始化數(shù)據(jù) DML data: classpath:sql/data.sql h3: # 開(kāi)啟console 訪(fǎng)問(wèn) 默認(rèn)false console: enabled: true settings: # 開(kāi)啟h3 console 跟蹤 方便調(diào)試 默認(rèn) false trace: true # 允許console 遠(yuǎn)程訪(fǎng)問(wèn) 默認(rèn)false web-allow-others: true # h3 訪(fǎng)問(wèn)路徑上下文 path: /h3-console # 日志 logging: level: cn: felord: debug # mybatis 配置 mybatis: mapper-locations: classpath:mapper/*.xml configuration: map-underscore-to-camel-case: true type-aliases-package: cn.felord.mybatis.entity type-handlers-package: cn.felord.mybatis.type
springboot項(xiàng)目 通過(guò)指定 --spring.profiles.active=inner
啟動(dòng)后,輸入http://localhost:8080/h3-console,進(jìn)入H2數(shù)據(jù)的控制臺(tái):
一定要注意紅框按照你配置文件中的spring.datasource.url
來(lái)設(shè)置,不要用默認(rèn)值。如果沒(méi)有設(shè)置密碼直接點(diǎn)connect,設(shè)置密碼了輸入。進(jìn)入下列界面:
因?yàn)槲覀冊(cè)诔跏蓟付薉DL 、 DML SQL腳本,創(chuàng)建了student表,而且插入了3條數(shù)據(jù)。所以會(huì)呈現(xiàn)出來(lái)。證明集成成功。同時(shí)我們執(zhí)行maven 工程的測(cè)試包也會(huì)成功完成Mybatis 單元測(cè)試。但是我們關(guān)閉應(yīng)用后數(shù)據(jù)會(huì)丟失因?yàn)檫@些數(shù)據(jù)存在于內(nèi)存中。內(nèi)存是會(huì)被回收的。不信你注釋掉 spring.datasource.schema
和spring.datasource.data
重啟看看。那么如何持久化呢?這就用到嵌入模式了。
嵌入模式就是數(shù)據(jù)庫(kù)文件存在于應(yīng)用當(dāng)前的硬盤(pán)內(nèi),進(jìn)行了持久化,當(dāng)應(yīng)用進(jìn)程關(guān)閉時(shí)數(shù)據(jù)庫(kù)與數(shù)據(jù)表不會(huì)消失。我們只需要將5.1的yml配置中的 spring.datasource.url
改為jdbc:h3:file:E:/H2/mybatis
。然后啟動(dòng)重新登錄console。注意url要改為jdbc:h3:file:E:/H2/mybatis
哦。發(fā)現(xiàn)數(shù)據(jù)都在,然后我們關(guān)閉再啟動(dòng)發(fā)現(xiàn)報(bào)錯(cuò)了:
說(shuō)明數(shù)據(jù)庫(kù)中的數(shù)據(jù)沖突了。我們注釋掉DDL、DML初始化發(fā)現(xiàn)又能啟動(dòng)了。證明數(shù)據(jù)持久化了。url 中 file: 后綴你系統(tǒng)的可用路徑,H2就能把數(shù)據(jù)持久化到該路徑下。
開(kāi)始我們提到H2可以兼容很多數(shù)據(jù)庫(kù)。如何兼容呢?通過(guò)url后綴MODE參數(shù)來(lái)設(shè)置,總結(jié)一下自己使用:
Oracle jdbc:h3:~/test;MODE=Oracle或SQL語(yǔ)句SET MODE Oracle
Mysql jdbc:h3:~/test;MODE=MySQL;DATABASE\_TO\_LOWER=TRUE
PostgreSQL jdbc:h3:~/test;MODE=PostgreSQL;DATABASE\_TO\_LOWER=TRUE
MS SQL Server jdbc:h3:~/test;MODE=MSSQLServer或SQL語(yǔ)句SET MODE MSSQLServer
其他不一一列舉,但是注意兼容也不是完全兼容,會(huì)有一些注意事項(xiàng)和微小的差別。一般不會(huì)出現(xiàn)問(wèn)題。進(jìn)一步了解可查閱官方文檔和其他資料。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝您對(duì)億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。