Home H2 Database
Post
Cancel

H2 Database

H2 Database 是一款轻量数据库,当开发中需要进行数据存储,但是又没有必要部署专门的数据存储服务时,h2 就是个很好的选择。

H2 具有以下特点:

  • 速度快,开源,JDBC API
  • 嵌入式和服务器模式;内存型数据库
  • 基于浏览器的控制台应用程序
  • 占用空间小:约 2 MB JAR文件大小

H2 可以工作在 3 种不同模式下:内存模式、嵌入模式、服务器模式,在使用 Spring Boot 进行开发时,其实只需要修改配置文件就能实现不同模式的切换。

0. 生成 Spring Boot 项目

首先在 Spring Initializr 上生成一个新的项目,依赖部分添加:Spring Web、Spring Data JPA、H2 Database 即可。

然后将下载的 zip 包解压,并在 Idea 中以 maven 工程的方式导入该项目。

1. 内存模式

内存模式,顾名思义就是数据是存在内存里的,应用重启后数据就没了。

这种模式感觉挺废的,本来是想持久化数据的,结果应用关掉后数据也没了。但也有一个好处,可以在启动应用时开启 h2 的控制台,这样就能一边跑一边在控制台里查看数据情况。

1
2
3
4
5
6
7
8
9
10
## Spring Boot 配置文件 application.properties
spring.datasource.platform=h2
spring.datasource.driver-class-name=org.h2.Driver
# 开启 h2 控制台
spring.h2.console.enabled=true
# JDBC Url: 内存模式,h2test 是数据库的名字,可以更改
spring.datasource.url=jdbc:h2:mem:h2test
# 可选: 用户名/密码
spring.datasource.username=xxx
spring.datasource.password=xxx

在之前生成的项目中添加以上内容后启动应用,浏览器中输入:http://localhost:8080/h2-console,就可以看到 h2 控制台的登陆界面。

如果没有配置用户名和密码,可以使用默认的用户名 sa(system admin)和空密码登陆,否则使用配置的用户名/密码。

配合 jpa 即可实现数据访问、存储等。添加以下代码启动应用,登陆 h2 控制台可以看到已经创建好的 Car 表单。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import java.io.Serializable;

@Entity
public class Car implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private String brand;

    private int value;

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int getValue() {
        return value;
    }

    public void setValue(int value) {
        this.value = value;
    }

    @Override
    public String toString() {
        return "Car{" +
                "id=" + id +
                ", brand='" + brand + '\'' +
                ", value=" + value +
                '}';
    }
}

2. 嵌入模式

嵌入模式是将数据存储到文件的模式,它跟内存模式配置上的差异只是 JDBC Url。

另外,嵌入模式下表单未用到时不会主动创建,可以对 ddl-auto 配置实现更改。

1
2
3
# JDBC Url: 嵌入模式,your_path 是数据文件的存放路径
spring.datasource.url=jdbc:h2:file:your_path
spring.jpa.hibernate.ddl-auto = create

通过以上配置,数据文件会在应用启动时自动创建,若数据文件已经创建过了,则应用会直接使用。

3. 服务器模式

服务器模式类似使用 MySQL 等数据库的方式,h2 服务提前在本地或远端启动,应用启动时去连接 h2 服务。

1
2
3
# JDBC Url: 服务器模式,your_path 是数据文件的存放路径
spring.datasource.url=jdbc:h2:tcp://localhost/your_path
spring.jpa.hibernate.ddl-auto = create

启动 h2 服务

官网提供了命令:Using the Server

1
2
3
4
5
6
# 默认启动
java -cp h2*.jar org.h2.tools.Server
# 查看帮助
java -cp h2*.jar org.h2.tools.Server -?
# 实际使用:-webAllowOthers 允许其它计算机通过网页连接;-tcpAllowOthers 允许其它计算机通过 tcp 连接;-ifNotExists 如果表单不存在允许创建
java -cp h2*.jar org.h2.tools.Server -webAllowOthers -tcpAllowOthers -ifNotExists

以上就是 h2 数据库的一个简单配置记录,方便快捷,做个人的微开发足够了。

This post is licensed under CC BY 4.0 by the author.