dev

DB - H2

/wrote/note/dev/db/h2/

DB - H2

-> 官网:http://www.h2database.com/html/main.html

特点

  • 支持内存模式,关闭连接后数据库将被清空
  • 文件体积小,安装、启动非常简单
  • 与 SQLit 相比较,读操作更快,但是在连接、写操作性能都不如 SQLite。

应用场景

  • 单元测试
  • 快速搭建应用

概述

H2本质上是一个Java程序,实现了一个简单的数据库系统。 而数据库的最重要的功能,就是存储数据。 回到H2上来,根据启动参数的不同,数据可以存在内存中,也可以存成文件。

那怎么使用数据库呢?分两个方面:

  • 一是启动数据库。
  • 二是连接上数据库,查询数据。

以Windows+MySQL为例:

  • 1,需要在电脑上下载安装MySQL Server,然后启动mysqld服务。
  • 2.1,通过MySQL Client,或者其他数据库客户端软件,填写正确的host+username/password,可以通过SQL访问数据库。
  • 2.2,在 Java 应用程序中,通过 MySQL driver,填写正确的 jdbc url,可以实现数据库读写。

回到H2上来,基本流程是一样的。但是,因为它是如此之轻量级,所以在大多数使用场景,第一步可以省略。或者说,背地里它把第一步和第二步合并起来了,让你感觉第一步被省略了。

比如,我写一个单元测试,在IDE里面,使用纯内存的H2,把依赖都配好,配置代码也写好了,直接点一下,就跑起来了。其实,背后,IDE根据你的配置在启动测试前先启动了H2数据库。

安装

以Windows系统为例,推荐两种安装/使用方式:

  1. 本地安装H2,(官网下载包,然后安装),然后浏览器打开H2 Console进行数据库管理(CRUD)
  2. IDE安装,IntelliJ高级版,在Database区域,可以配置H2 Driver,这样App就可以连数据库了。

连接方式

笔者把常见的连接方式分了2种:

  • Local / Embeded
  • Remote

本地连接

本地起服务,本地使用。

远程连接

本地起好服务,(支持)远程连接使用。 (本地起好了服务,本地localhost连可以吗?当然可以)

jdbc范例:jdbc:h2:tcp://localhost/~/test

参考 -> http://www.h2database.com/html/tutorial.html#using_server

存储方式

笔者把常见的存储方式分了2种:

  • In Memory
  • File

纯内存

没有persistence jdbc:h2:mem:test_mem

文件

有persistence jdbc:h2:file:F:/H2/db1

参考 -> http://www.h2database.com/html/features.html#connection_modes

工具

  • H2 Web Console
  • IDE

参考