0%

嵌入式数据库H2使用总结

项目案例代码:github/h2db

H2是一个纯Java开发的嵌入式数据库,它可以作为内存数据库将数据保存在内存中,也可以持久化保存在硬盘中

H2最主要的一个特征在于它足够轻,轻到只用一个jar包便可以启动

1
2
3
4
5
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.196</version>
</dependency>

以Mysql为例,传统的数据库要启动一般包含下面几个步骤

  • 下载安装Mysql

  • 建库建表

  • 创建应用、设置源地址、建立连接并编码

而H2可以省略安装的操作,并且极大简化建库建表跟编码的工作

咋一看,好像没啥特别的作用,但在下面这几个应用场景中还是用h2最为合适

  • 案例型项目:纯粹为了验证某一种技术方案可行性而编写的demo项目

  • 各种项目下的测试单元:测试单元如果涉及到数据库的操作,那么这种情况下使用h2并将数据临时存储在内存种是最合适不过的

  • client-server类型的项目

H2作为一款嵌入式数据库,同时支持两种运行模式:In-memory DataBae与Persisted Database

前者是在系统启动时,将数据库直接创建在内存中,系统每次重启都会清除所有数据库相关信息(案例演示跟测试单元中常用这种模式)

后者则是将数据持久化保存在硬盘中,当然现在并不推荐这种方式(毕竟要持久化保存数据的话,还是mysql这些来的靠谱)

假设要创建一个名为test_base的数据库,如果我们以In-memory DataBae的模式启动,那么按照下述编写代码即可:

String JDBC_DRIVER = "org.h2.Driver";
String url = "jdbc:h2:mem:test_base";
String user = "sa";
String passwd = "";
//注册JDBC驱动类
Class.forName(JDBC_DRIVER);
//建立链接
Connection conn = DriverManager.getConnection(url, user, passwd);

如果要以Persisted Database模式启动,将url改为: jdbc:h2:./data/db/test_base 即可(更详细的代码请参考h2db-basic的代码)

注意这里的”./data/db/“表示操作系统的相对目录,test_base为数据库名

除了上述直接用原生的写法之外,h2也可以在Spring Boot、Mybatis等框架下运行

参考链接