最近做一个小项目,需要存储的数据不多,用mysql太重了,用其他的Redis之类的也不太方便,然后就想到了H2,他就是一个jar包,可以和项目一起打包发布,非常适合数据量不多的微小系统,下面大概介绍下H2的基本知识和Springboot的集成

一.什么是H2内存数据库

H2是一个用Java开发的嵌入式数据库,它本身只是一个类库,可以直接嵌入到应用项目中。

1.H2用途

  • H2最大的用途在于可以同应用程序打包在一起发布,这样可以非常方便地存储少量结构化数据。
  • 它的另一个用途是用于单元测试。启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态。
  • H2的第三个用处是作为缓存,作为NoSQL的一个补充。

2.H2优势

  • 纯Java开发的,只有一个jar文件,非常适合作为嵌入式数据库,也支持服务器模式和集群
  • h2提供了一个十分方便的web控制台用于操作和管理数据库内容;
  • 完全支持jdbc和sql,使用起来和mysql没啥区别

二.Springboot集成H2

1.添加依赖

com.h2databaseh22.1.214org.springframework.bootspring-boot-starter-data-jpa

2.添加配置

spring:datasource:data: classpath:db/data.sqldriverClassName: org.h2.Driverplatform: h2schema: classpath:db/table.sqlurl: jdbc:h2:mem:test# url:jdbc:h2:~/test#url:jdbc:h2:tcp//localhost/〜/testusername: rootpassword: 123123h2:console:enabled: truepath: /h2settings:web-allow-others: truejpa:hibernate:ddl-auto: updateshow-sql: true

url: jdbc:h2:mem:test 内存模式,数据不会持久化
url:jdbc:h2:~/test 嵌入模式,数据文件存储在用户目录test开头的文件中
url:jdbc:h2:tcp//localhost/〜/test 远程模式,访问远程的h2 数据库

3.resource下添加表结构sql文件和初始化sql文件

table.sql

create table if not exists user(USER_ID int not null primary key auto_increment,USER_NAME varchar(50));

data.sql

INSERT INTO user (USER_ID,USER_NAME) VALUES(1,'user1');

4.添加实体类

package com.demo.h2.entity;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;@Entity@Table(name = "user")public class User {@Idprivate int userId;private String userName;public int getUserId() {return userId;}public void setUserId(int userId) {this.userId = userId;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}}

5.添加dao

package com.demo.h2.dao;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.stereotype.Repository;import com.demo.h2.entity.User;@Repositorypublic interface UserDAO extends JpaRepository {}

dao使用方法和一般jps相同,这个就不再赘述

项目启动之后访问http://localhost:8080/h2 就可以访问h2数据库的可视化后台,填入配置的url和驱动,帐号密码等信息进入操作控制台。