Java内存数据库-H2介绍及实例

介绍

内存数据库(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文件如下:

(3)编写启动类

启动类代码我们已经写了不下100遍了,这里就不过多介绍,直接看源码:

(4)编写测试类;

以上可以说都是准备工作,到这里才是到了本节核心的地方,在具体提供源代码之前,先说一下具体的一个思路:我们这里要使用repository保存数据到h2数据库,我们需要提供一个实体类DemoInfo,其次就是具体的保存数据类DemoInfoRepository,再者就是DemoInfoController进行编码测试。你会发现我们这里根本没有配置jpa,h2配置文件之类的,这个就是spring boot强大之处,已经提供了很多默认的配置,让开发者能够快速编写一个hello例子。那么我们每个具体的代码:

这里提供两个访问方法/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此时没有数据,说明了数据只保存在内存中,重启之后就释放了之前存入的数据。

(7)实现h2数据库本地化;

我们会发现程序一重新启动,数据就都不见了,有些时候,我们还是希望数据能一直存在的,那么问题就是h2如何实现本地化呢?

很简单需要配置下application.properties文件即可:

到这里正常启动之后,启动程序,程序也能够正常运行,testdb.mv.db也会生成,但是重新启动之后直接访问findAll就是没有数据,难道是我们的本地化配置有问题嘛,其实不是这个主要是由于jpa导致的,jpa有一个表的生成省略,默认是启动的时候不管三七二十一就删除原来的表结构重新生成,所以我们需要调整下就是只进行更新,具体操作是在application.properties添加:

(文章做了部分删减)

作者:林祥纤

原文请看:https://412887952-qq-com.iteye.com/blog/2322756

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181224A0S12B00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券