H2 2.5 介绍与选型指南

H2 2.5 介绍与选型指南:基于官方资料梳理其 MVStore 存储引擎、嵌入式与服务器连接模式、事务与安全特性、JDBC 快速上手流程与适用场景,并对比 SQLite、Apache Derby、HSQLDB 给出选型建议。

H2H2嵌入式数据库关系型数据库2026/10/19

H2 2.5 介绍与选型指南

一、信息基准

项目内容
查询日期2026-10-19
本文版本基准H2 2.5(当前官方最新稳定版 2.5.252,官网下载区标注日期 2026-09-23,GitHub release 条目更新于 2026-09-24;2.5.250 发布于 2026-08-29;上一主线 2.4.240 发布于 2025-09-22;2.3.x 系列终点为 2.3.232,发布于 2024-08-11)
项目状态活跃维护:2.2.224(2023-09-17)→ 2.3.230(2024-07-15)→ 2.3.232(2024-08-11)→ 2.4.240(2025-09-22)→ 2.5.250/2.5.252(2026 年),官方 Change Log 持续滚动更新
开源许可MPL 2.0 或 EPL 1.0 双许可(使用者可任选其一)
运行要求纯 Java 实现,Java 11 或更新版本(官方标注以 Java 11 与 17 测试),支持 Windows/macOS/Linux

官方来源清单:

来源地址用途
官网首页与下载区https://h2database.com/当前版本号、下载包、特性概览
官方 Change Loghttps://h2database.com/html/changelog.html版本发布记录(2.5.252 等)
官方 Quickstarthttps://h2database.com/html/quickstart.html嵌入式用法与 Console 上手
官方 Featureshttps://h2database.com/html/features.html完整特性清单
官方 Requirements(Installation 页)https://h2database.com/html/installation.htmlJava 版本与平台要求
官方 Architecture 页https://h2database.com/html/architecture.html引擎分层与 MVStore 说明
官方 License 页https://h2database.com/html/license.htmlMPL 2.0 / EPL 1.0 双许可
GitHub 仓库https://github.com/h2database/h2database源码、release feed、stars 数据
Maven Central 元数据https://repo1.maven.org/maven2/com/h2database/h2/maven-metadata.xmllatest/release 版本交叉核验

二、软件概述

本文介绍的是 H2 2.5(当前官方最新稳定版为 2.5.252,2026-09-23 发布;任务关注的 2.3.x 系列已于 2024-08-11 以 2.3.232 收尾,官方此后推进 2.4.240 与 2.5.252 两条新版本线,本文按官方最新版为准,并覆盖 2.3.x 至 2.5.x 的关键演进)。

H2 是一个用 Java 编写的开源 SQL 数据库引擎,官方首页将其核心卖点概括为:速度快、开源、提供 JDBC API;支持嵌入式与服务器两种运行模式以及内存数据库;附带基于浏览器的 Console 管理应用;体积小巧——jar 包约 2.5 MB,且不带任何第三方依赖。凭借"把一个完整关系型数据库以单个 jar 嵌入应用进程"的形态,H2 长期是 Java 生态中单测、演示、原型与小型应用的首选嵌入式数据库之一,同时也可切换为独立 TCP 服务器模式对外提供服务。

版本演进方面,2.3.x(2.3.230/2.3.232,2024 年)主要修复数据库损坏类缺陷并增强 RANDOM_UUID 等 SQL 函数;2.4.240(2025-09-22)引入 SHUTDOWN COMPACT 并行压缩等改进;2.5 线(2.5.250、2.5.252,2026 年)集中于 MVStore 性能与并发修复、物化视图缺陷修复及安全加固(反序列化过滤、URL 注入修复等,见官方 Change Log)。

三、核心架构

依据官方 Architecture 页与 Features 页:

  1. 单 jar 引擎:整个数据库引擎为一个无第三方依赖的 jar(约 2.5 MB),随应用进程内嵌运行,也可通过 Server 工具独立进程运行。
  2. 会话分层:org.h2.engine.Session 抽象统一本地(嵌入式)会话与 org.h2.engine.SessionRemote(远程 TCP)会话,同一套引擎覆盖嵌入式/服务器/混合三种连接模式。
  3. 解析与执行:org.h2.command.Parser 采用递归下降设计直接生成命令执行对象,官方明确说明不设中间 IR(中间表示)层,解析后直接在命令对象上做优化改写。
  4. 存储引擎 MVStore:默认存储引擎为 MVStore(多版本存储树),页式存储分配、B-tree 组织;官方另提供 MVStore 专题页。索引在实现上以"特殊表"形式存储;事务层使用会话共享的事务日志(redo log)与会话级 undo log,配合多版本并发控制(MVCC)。
  5. 并发控制:支持 read uncommitted、read committed、repeatable read、snapshot 四种隔离级别,行级锁与多连接,支持两阶段提交(2-phase-commit)。
  6. 工具层:内置浏览器 Console(默认 http://localhost:8082 )、CSV 读写、Script/RunScript、Recover 恢复工具等命令行工具族。

四、功能特性

依据官方 Features 页「Feature List」:

  1. 连接模式:嵌入式、服务器、自动混合模式(automatic mixed mode)、集群(clustering)支持;兼容 PostgreSQL ODBC 驱动。
  2. 存储形态:磁盘库或内存库、只读库、临时表;数据库文件可用 AES-128 整体加密,口令经 SHA-256 加盐处理。
  3. SQL 能力:支持多 schema、外键级联与检查约束、内外连接、子查询、只读视图;窗口函数、生成列(可构建函数索引)、序列与 identity 列;OFFSET/FETCH(含 PERCENT/WITH TIES)、LIMIT/TOP、DISTINCT ON 等子句;触发器与 Java 函数/存储过程。
  4. 兼容模式:提供 IBM DB2、Apache Derby、HSQLDB、MS SQL Server、MySQL、Oracle、PostgreSQL 七种兼容模式,降低既有 SQL 迁移成本。
  5. 索引类型:b-tree、hash 等多种索引,支持多维索引。
  6. 数据交换:CSV 文件读写、linked tables(链接外部数据库表)、内置虚拟 range 表。
  7. 安全特性:SQL 注入防护方案;服务器模式下口令不以明文传输;JDBC over TLS;内置 Web 服务器支持 TLS。
  8. 运维工具:EXPLAIN PLAN、可延迟/禁用关闭的数据库、生成 SQL 脚本、恢复工具(Recover)、每记录与日志条目的校验和。
  9. 可观测性:成熟的 trace 选项与错误分析器(Error Analyzer)支撑问题定位。

五、快速上手

以下步骤整理自官方 Quickstart(来源:https://h2database.com/html/quickstart.html ,本文仅整理官方步骤,未做本地实测)。

嵌入式用法(官方 Quickstart「Embedding H2 in an Application」):

  1. 将 h2*.jar 加入 classpath(官方强调 H2 无任何依赖);
  2. 使用 JDBC 驱动类 org.h2.Driver;
  3. 用数据库 URL jdbc:h2:~/test 打开用户主目录下的 test 库——数据库不存在时自动创建。

标准 JDBC 调用形态(与官方 Quickstart 的驱动/URL 约定一致):

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

Connection conn = DriverManager.getConnection("jdbc:h2:~/test", "sa", "");
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("SELECT 'Hello, H2' AS msg");
rs.next();
System.out.println(rs.getString("msg"));
conn.close();

内存数据库只需将 URL 换为 jdbc:h2:mem:testdb(官方 Features 页 In-Memory Databases 章节)。

H2 Console 应用(官方 Quickstart「The H2 Console Application」):运行安装包 bin 目录下的启动脚本(或 java -jar h2*.jar),浏览器自动打开 http://localhost:8082 ;登录页选择 [Generic H2] 并点击 [Connect] 即可进入,可用 [Sample SQL Script] 载入示例脚本并点击 [Run] 执行。

六、适用场景与限制

适用场景:

  1. Java 单元测试与 CI:内存模式 + 无外部依赖,随测随建随弃。
  2. 桌面/单体应用的嵌入式持久层:单 jar、AES 加密、自动混合模式可平滑过渡为共享服务器。
  3. 概念验证与教学演示:Console 可视化 + 七种数据库兼容模式,便于演示多种方言。
  4. 小型网站与内部工具的服务器模式部署:TCP 服务器模式 + TLS。

限制与注意:

  1. 官方将定位限定为轻量场景,不适合替代企业级 OLTP 数据库承载关键交易系统。
  2. 多进程并发写同一文件的场景受限:数据库文件锁机制限定同一时刻仅一个进程可持有写锁(官方 Database File Locking 章节)。
  3. 集群能力为基础形态(两节点热备级别),与独立分布式数据库不在同一量级。
  4. 2.x 与 1.4.x 存储格式与行为存在不兼容,从 1.x 迁移需按官方 Migration to 2.0 文档处理。

七、同类选型对比

对比对象:SQLite、Apache Derby、HSQLDB。数据查询日期 2026-10-19,来源见括号内标注;查不到的维度如实标注。

维度H2 2.5SQLite 3.54Apache Derby 10.17HSQLDB 2.7
开源许可MPL 2.0 / EPL 1.0 双许可(官网 License 页)公有领域(public domain,sqlite.org 声明)Apache-2.0(Apache 软件基金会项目)基于 BSD 的 HSQLDB 许可(官网描述与所有许可兼容)
GitHub stars / 最近发版4,637(github.com/h2database/h2database,2026-10-19 查询);2.5.252 发布于 2026-09-2310,722(github.com/sqlite/sqlite 官方只读仓库,2026-10-19 查询);3.54.1 发布于 2026-10-16(sqlite.org/news.html)379(github.com/apache/derby,2026-10-19 查询);10.17.1.0 为官网下载页最新版(Maven Central 构件时间 2023-11-10)官方 GitHub 仓库(github.com/hsqldb/hsqldb)stars 为 0,项目主要经 SourceForge 与 Maven Central 分发;2.7.4(Maven Central 构件时间 2024-11-03)
版本节奏按构建号滚动发布:2.2.224(2023-09)→ 2.3.230/232(2024-07/08)→ 2.4.240(2025-09)→ 2.5.250/252(2026-08/09)年度大版本叠加定期补丁:3.53.4 于 2026-07-24、3.54.0 于 2026-10-09、3.54.1 于 2026-10-16大版本间隔长(10.16.1.1 → 10.17.1.0),近年以偶发维护为主2.7.x 为长期维护线,更新频率低
兼容矩阵纯 Java,Java 11+(官方以 11/17 测试),Windows/macOS/Linux;内置 DB2/Derby/HSQLDB/MS SQL Server/MySQL/Oracle/PostgreSQL 兼容模式C 语言引擎,单一跨平台文件格式;C API 原生,JDBC/ODBC 驱动由社区与官方扩展提供纯 Java,JDBC 4.2;嵌入式与网络服务器双模式纯 Java,JDBC;嵌入式/服务器/内存模式

选型建议:Java 技术栈需要嵌入式库、单测沙箱或单文件持久层时选 H2;非 Java 环境或需要跨语言、跨设备单文件数据库时选 SQLite;追求 Apache 基金会治理与保守稳定、对发版节奏不敏感的企业嵌入式场景选 Derby;维护既有 HSQLDB 老系统或教学场景可继续沿用 HSQLDB。

八、参考链接

  1. H2 官网:https://h2database.com/
  2. 官方 Change Log:https://h2database.com/html/changelog.html
  3. 官方 Quickstart:https://h2database.com/html/quickstart.html
  4. 官方 Features:https://h2database.com/html/features.html
  5. 官方 Requirements(Installation):https://h2database.com/html/installation.html
  6. 官方 Architecture:https://h2database.com/html/architecture.html
  7. 官方 License(MPL 2.0 / EPL 1.0):https://h2database.com/html/license.html
  8. GitHub 仓库:https://github.com/h2database/h2database
  9. Maven Central 元数据:https://repo1.maven.org/maven2/com/h2database/h2/maven-metadata.xml
  10. SQLite 新闻页:https://sqlite.org/news.html
  11. Apache Derby 官方下载页:https://db.apache.org/derby/derby_downloads.html
  12. HSQLDB 官网:http://hsqldb.org/