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 数据库的一个简单配置记录,方便快捷,做个人的微开发足够了。