介绍
内存数据库(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
领取专属 10元无门槛券
私享最新 技术干货