Java内存数据库-H2介绍及实例(SpringBoot)
2017-06-20 11:50
435 查看
介绍
内存数据库(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@GeneratedValue private 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 { @Autowired private 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
相关文章推荐
- Spring Boot+Maven 工程配置H2内存数据库
- JAVA Maven SSM框架以及SpringBoot,mybatise框架整合实例开发的脚手架
- Spring Boot使用内存数据库H2和HSQLDB【从零开始学Spring Boot】
- springboot配置内存数据库H2教程详解
- java~springboot~h2数据库在单元测试中的使用
- springboot整合H2内存数据库,实现单元测试与数据库无关性
- java springboot与elasticsearch结合以及elasticsearch增删改查实例
- 本文主要介绍使用SpringBoot与shiro实现基于数据库的细粒度动态权限管理系统实例。
- 【Java】SpringBoot 引入fastjson库进行json格式数据返回实例
- 87. Spring Boot使用内存数据库H2和HSQLDB【从零开始学Spring Boot】
- Spring Boot+Maven 工程配置h2内存数据库
- JAVA爱好者--------------- Spring学习之一术语介绍
- u-boot命令介绍及烧写程序实例
- WebService介绍(WebService基础知识、XFire、CXF(基于XFire和Celtix项目整合而来,与Spring融合好)、AXIS1、AXIS2(有AXIS1转换而来,有Java)
- WebService介绍(WebService基础知识、XFire、CXF(基于XFire和Celtix项目整合而来,与Spring融合好)、AXIS1、AXIS2(有AXIS1转换而来,有Java)
- u-boot命令介绍及烧写程序实例(备忘)
- java-Spring通过实例讲解信息与事件
- 定时器的实现、java定时器介绍与Spring中定时器的配置
- H2介绍 – Java嵌入式数据库
- spring+hibernate 二级缓存 配置+java使用实例