嵌入式數(shù)據(jù)庫H2的使用以及集成Spring Boot的操作示例,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)服務項目包括牟定網(wǎng)站建設、牟定網(wǎng)站制作、牟定網(wǎng)頁制作以及牟定網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,牟定網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到牟定省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
前面講一些Mybatis特性的時候總是要寫一些例子演示給粉絲。用MySQL或者其他很大的數(shù)據(jù)庫太重了,因為只是個demo而已。當然也可以使用docker來安裝。但是還是需要依賴一些東西。有沒有非常小巧而且便于攜帶的數(shù)據(jù)庫,而且能滿足很小場景的數(shù)據(jù)庫。當然有。今天介紹一種純java編寫而且支持jdbc的嵌入式關系型數(shù)據(jù)庫H2。
H2數(shù)據(jù)庫的特點:
非常快,開源,支持JDBC API
嵌入式和服務器模式;內(nèi)存數(shù)據(jù)庫
基于瀏覽器的控制臺應用程序
占用空間小,jar只有2MB大小
以上只是官網(wǎng)列出的特點。其實還有跨平臺的優(yōu)勢,支持目前常見的大部分平臺。還兼容常見的主流關系型數(shù)據(jù)庫,比如DB2、Oracle、MS SQL Server、Mysql、PostgreSQL、HSQLDB、Ignite、Derby等。
基于以上的特點。H2數(shù)據(jù)庫特別適用于快速構建的小型應用。尤其在應用開發(fā)中和單元測試中使用非常方便,而且節(jié)省系統(tǒng)資源。而且springboot的依賴池也收錄了H2數(shù)據(jù)庫。接下來我們通過springboot結合Mybatis來對H2數(shù)據(jù)庫進行一些特性的講解演示。
springboot使用H2數(shù)據(jù)庫非常簡單。集成BOM下的H2依賴就可以了。這里為了演示我們還引入了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>
當然引入依賴還不夠我們還需要對其他參數(shù)進行配置。當然這些配置可以通過springboot的 application.yml(application.properties)來完成。我們知道H2支持像tomcat一樣內(nèi)嵌到springboot應用中,也支持獨立的server進程模式。通過不同的配置我們來演示一下。
內(nèi)嵌模式,就是把在應用中引入H2,啟動應用的同時,會把H2數(shù)據(jù)服務也啟動,應用中既包含了H2數(shù)據(jù)庫的服務端,同時應用又作為客戶端來連接H2數(shù)據(jù)庫。
內(nèi)存模式就是數(shù)據(jù)庫文件存在于內(nèi)存中,沒有持久化,當應用進程關閉時數(shù)據(jù)庫與數(shù)據(jù)表會消失。為了獨立環(huán)境,我們利用springboot的profile特性來隔離不同模式的環(huán)境配置。我們定制一個名稱為application-inner.yml
來測試內(nèi)嵌模式。配置如下:
spring: datasource: # 驅(qū)動 driver-class-name: org.h3.Driver # h3 內(nèi)存數(shù)據(jù)庫 內(nèi)存模式連接配置 庫名: mybatis url: jdbc:h3:mem:mybatis # 初始化數(shù)據(jù)表 DDL schema: classpath:sql/init.sql # 初始化數(shù)據(jù) DML data: classpath:sql/data.sql h3: # 開啟console 訪問 默認false console: enabled: true settings: # 開啟h3 console 跟蹤 方便調(diào)試 默認 false trace: true # 允許console 遠程訪問 默認false web-allow-others: true # h3 訪問路徑上下文 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項目 通過指定 --spring.profiles.active=inner
啟動后,輸入http://localhost:8080/h3-console,進入H2數(shù)據(jù)的控制臺:
一定要注意紅框按照你配置文件中的spring.datasource.url
來設置,不要用默認值。如果沒有設置密碼直接點connect,設置密碼了輸入。進入下列界面:
因為我們在初始化指定了DDL 、 DML SQL腳本,創(chuàng)建了student表,而且插入了3條數(shù)據(jù)。所以會呈現(xiàn)出來。證明集成成功。同時我們執(zhí)行maven 工程的測試包也會成功完成Mybatis 單元測試。但是我們關閉應用后數(shù)據(jù)會丟失因為這些數(shù)據(jù)存在于內(nèi)存中。內(nèi)存是會被回收的。不信你注釋掉 spring.datasource.schema
和spring.datasource.data
重啟看看。那么如何持久化呢?這就用到嵌入模式了。
嵌入模式就是數(shù)據(jù)庫文件存在于應用當前的硬盤內(nèi),進行了持久化,當應用進程關閉時數(shù)據(jù)庫與數(shù)據(jù)表不會消失。我們只需要將5.1的yml配置中的 spring.datasource.url
改為jdbc:h3:file:E:/H2/mybatis
。然后啟動重新登錄console。注意url要改為jdbc:h3:file:E:/H2/mybatis
哦。發(fā)現(xiàn)數(shù)據(jù)都在,然后我們關閉再啟動發(fā)現(xiàn)報錯了:
說明數(shù)據(jù)庫中的數(shù)據(jù)沖突了。我們注釋掉DDL、DML初始化發(fā)現(xiàn)又能啟動了。證明數(shù)據(jù)持久化了。url 中 file: 后綴你系統(tǒng)的可用路徑,H2就能把數(shù)據(jù)持久化到該路徑下。
開始我們提到H2可以兼容很多數(shù)據(jù)庫。如何兼容呢?通過url后綴MODE參數(shù)來設置,總結一下自己使用:
Oracle jdbc:h3:~/test;MODE=Oracle或SQL語句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語句SET MODE MSSQLServer
其他不一一列舉,但是注意兼容也不是完全兼容,會有一些注意事項和微小的差別。一般不會出現(xiàn)問題。進一步了解可查閱官方文檔和其他資料。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。
網(wǎng)站名稱:嵌入式數(shù)據(jù)庫H2的使用以及集成SpringBoot的操作示例
當前網(wǎng)址:http://chinadenli.net/article22/pgoecc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、外貿(mào)建站、企業(yè)建站、App設計、網(wǎng)站設計公司、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)