介绍

内存数据库(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)相关推荐

  1. java学习 类变量 类方法_这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下类变量(...

    这篇文章主要介绍了JAVA类变量及类方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 类变量(static) 类变量是该类的所有对象共 ...

  2. Java 程序连接 Informix 数据库方法实例介绍

    Java 程序连接 Informix 数据库方法实例介绍 Informix 是一种应用广泛的关系型数据库服务器,支持多种类型的客户端连接程序,包括 .Net.Java.PHP 等.对于 Java 程序 ...

  3. 二、Java内存数据库实践之深入浅出Redis - Redis安装与配置

    在开始本篇之前,可先了解上一篇redis的基本知识(一.Java内存数据库实践之深入浅出Redis - Redis介绍) http://josh-persistence.iteye.com/blog/ ...

  4. java.util.concurrent介绍【转】

    java.util.concurrent介绍 java.util.concurrent 包含许多线程安全.测试良好.高性能的并发构建块.不客气地说,创建 java.util.concurrent 的目 ...

  5. .Net/C# 与 J2EE/Java Web Service 互操作完整实例

    http://www.cnblogs.com/Microshaoft/archive/2005/08/18/217213.html .Net 与 J2EE/Java Web Service 互操作完整 ...

  6. [译]Java 垃圾回收介绍

    说明:这篇文章来翻译来自于Javapapers 的Java Garbage Collection Introduction 在Java中,对象内存空间的分配与回收是由JVM中的垃圾回收进程自动完成的. ...

  7. JAVA 线程的介绍与使用

    本篇博客:JAVA 线程的介绍与使用 线程的创建 线程是程序中的执行流. 一个执行流是CPU运行程序代码并操作程序的数据所形成的. 因此,线程被认为是CPU为主体的行为. 线程的创建共有两个方法 通过 ...

  8. AJAX for Java简单表数据查询实例

    AJAX for Java简单表数据查询实例<?XML:NAMESPACE PREFIX = O /> AJAX WebShop 3对Java开发具有良好的支持,同时也提供了各种层次的后台 ...

  9. java tcp demo_详解Java使用TCP实现数据传输实例

    这篇文章主要介绍了Java使用TCP实现数据传输实例详解的相关资料,需要的朋友可以参考下 Java使用TCP实现数据传输实例详解 TCP所提供服务的主要特点: 1.面向连接的传输: 2.端到端的通信: ...

最新文章

  1. 禅道开源项目管理软件正式发布2.3版本
  2. 日志文件设计学习(一)
  3. 测试驱动的面向对象软件开发(china-pub首发)
  4. java反射获取注解id,通过反射获取注解(Annotation)
  5. Nodejs实现一个http反向代理
  6. D8 NOTES 2018-10-17
  7. Hart 常用命令 命令格式+命令含义 中文翻译
  8. 汽车之家各种车型参数爬虫
  9. 14 ABSOLUTE评估肿瘤纯度
  10. 柳江南:校园绝品狂徒
  11. 高盛发布区块链报告:从理论到实践(中文版)二
  12. 木心先生的句子,不仅美,而且富有深意! ​​​
  13. Zotero文献管理软件入门使用方法:软件下载、文献导入、引文插入
  14. 正则表达式,和python re模块
  15. 4 Debezium抽取部署
  16. Ty学习笔记-Redis6
  17. 从android恢复到iphone,iPhone换到安卓机有多难适应?看看是怎么恢复过来的!
  18. python整数范围_python 数字范围
  19. 图着色问题 (25分)
  20. 运维利器之mysql进行表的分区

热门文章

  1. 正则表达式匹配不包含特定字符串解决匹配溢出问题
  2. js动态给当前点击元素添加css类
  3. 在大数据时代,我们需要数据售货员
  4. Git的冲突解决过程
  5. (转)Android 使用com.j256.ormlite
  6. 【原创】用J-LINK烧写ARM开发板的Nor Flash
  7. [转]程序员生涯总结
  8. 用形态学的方法实现图像的角点检测
  9. 计算机网络技术与应用教程期末考试,2011大学计算机网络技术与应用教程客观题期末复习(含判断题,属于公共课程,使用)...
  10. linux 内核发布时间,求问Linux最新内核版本以及发布日期。