Java内存数据库-H2介绍及实例(SpringBoot)
介紹
內存數據庫(Embedded database或in-momery database)具有配置簡單、啟動速度快、尤其是其可測試性等優點,使其成為開發過程中非常有用的輕量級數據庫。在spring中支持HSQL、H2和Derby三種數據庫。
總的感覺H2很厲害的樣子,既然是這樣的話,我們先介紹H2的使用,然后在介紹HSQLDB的使用。
實例
(1)新建一個maven java project
新建一個spring-boot-h2工程。
(2)添加相關依賴
在pom.xml文件添加相關依賴,核心的就是com.h2database,另外就是編碼需要用到的spring-boot-starter-web(編寫rest), spring-boot-starter-data-jpa(主要是使用@Entity管理實體類),具體的pom.xml文件如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.kfit</groupId><artifactId>spring-boot-h2</artifactId><version>0.0.1-SNAPSHOT</version><packaging>jar</packaging><name>spring-boot-h2</name><url>http://maven.apache.org</url><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><!-- jdk版本號,Angel在這里使用1.8,大家修改為大家本地配置的jdk版本號即可 --><java.version>1.8</java.version></properties><!--spring boot 父節點依賴,引入這個之后相關的引入就不需要添加version配置,spring boot會自動選擇最合適的版本進行添加。--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.3.3.RELEASE</version></parent><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><scope>test</scope></dependency><!-- spring boot web支持:mvc,aop... --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- spring data jpa --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!-- 內存數據庫h2--> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId><scope>runtime</scope></dependency></dependencies> </project>(3)編寫啟動類
啟動類代碼我們已經寫了不下100遍了,這里就不過多介紹,直接看源碼:
package com.kfit;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;/**** @author Angel --守護天使* @version v.0.1* @date 2016年9月5日*/ @SpringBootApplication public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);} }(4)編寫測試類;
以上可以說都是準備工作,到這里才是到了本節核心的地方,在具體提供源代碼之前,先說一下具體的一個思路:我們這里要使用repository保存數據到h2數據庫,我們需要提供一個實體類DemoInfo,其次就是具體的保存數據類DemoInfoRepository,再者就是DemoInfoController進行編碼測試。你會發現我們這里根本沒有配置jpa,h2配置文件之類的,這個就是spring boot強大之處,已經提供了很多默認的配置,讓開發者能夠快速編寫一個hello例子。那么我們每個具體的代碼:
實體類:com.kfit.demo.bean.DemoInfo:
package com.kfit.demo.bean; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class DemoInfo {@Id@GeneratedValueprivate long id;private String title;private String content;public DemoInfo() {}public DemoInfo(String title, String content) {this.title = title;this.content = content;}public long getId() {return id;}public void setId(longid) {this.id = id;}public String getTitle() {return title;}publicvoid setTitle(String title) {this.title = title;}public String getContent() {return content;}publicvoid setContent(String content) {this.content = content;} }DemoInfo的持久類:com.kfit.demo.repository.DemoInfoRepository
package com.kfit.demo.repository;import org.springframework.data.repository.CrudRepository; import com.kfit.demo.bean.DemoInfo; public interface DemoInfoRepository extends CrudRepository<DemoInfo,Long>{}訪問控制類:com.kfit.demo.web.DemoInfoController:
package com.kfit.demo.web;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;import com.kfit.demo.bean.DemoInfo; import com.kfit.demo.repository.DemoInfoRepository;@RestController public class DemoInfoController {@Autowiredprivate DemoInfoRepository demoInfoRepository;/*** 保存數據.* @return*/@RequestMapping("/save")public String save(){// 內存數據庫操作 demoInfoRepository.save(new DemoInfo("title1", "content1")); demoInfoRepository.save(new DemoInfo("title2", "content2")); demoInfoRepository.save(new DemoInfo("title3", "content3")); demoInfoRepository.save(new DemoInfo("title4", "content4")); demoInfoRepository.save(new DemoInfo("title5", "content5")); return "save ok";}/*** 獲取所有數據.* @return*/@RequestMapping("/findAll")public Iterable<DemoInfo> findAll(){// 內存數據庫操作 return demoInfoRepository.findAll();}}這里提供兩個訪問方法/save,/findAll。
到這里基本的一個例子就編寫完畢了,我們就可以啟動App.java進行測試。
依次訪問:
http://127.0.0.1:8080/findAll 此時沒有數據;
http://127.0.0.1:8080/save 保存測試數據;
http://127.0.0.1:8080/findAll 會看到save進入的數據;
重新啟動App.java,在訪問:
http://127.0.0.1:8080/findAll 此時沒有數據,說明了數據只保存在內存中,重啟之后就釋放了之前存入的數據。
轉自 http://412887952-qq-com.iteye.com/blog/2322756
轉載于:https://www.cnblogs.com/kevinyau/p/11084449.html
總結
以上是生活随笔為你收集整理的Java内存数据库-H2介绍及实例(SpringBoot)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中PreparedStateme
- 下一篇: 如何选择版本控制系统之二