跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Spring 嵌入式内存数据库选型:H2、Derby 与 HSQL 对比

针对 Spring 项目嵌入式单测数据库需求,对比了 Derby、HSQL 与 H2 三种方案。Derby 存在数据类型少、保留字限制及 LIMIT/OFFSET 语法差异问题;HSQL 同样存在语法支持不足和关键字限制。H2 在语法和数据类型上与 MySQL 兼容性最佳。针对 H2 默认返回大写的问题,可通过配置 DATABASE_TO_UPPER=FALSE 解决。最终推荐 H2 配合特定配置用于单元测试环境。

FrontendX发布于 2017/5/12更新于 2026/10/22101 浏览
Spring 嵌入式内存数据库选型:H2、Derby 与 HSQL 对比

Spring 嵌入式内存数据库选型:H2、Derby 与 HSQL 对比

背景

小组希望有独立的单测数据库以保证数据稳定性。由于项目基于 Spring,优先选择 Spring 自带的三种嵌入式数据库进行尝试。

内存数据库问题汇总

Derby

  1. 数据类型支持有限:仅支持 int、smallint、bigint 等基础类型。
  2. 保留关键字限制:如 Hour 等不能使用,但可通过加引号解决。
  3. 语法兼容性:LIMIT 和 OFFSET 语法与 MySQL 不一致。

HSQL

  1. 语法支持不足:对 LIMIT 和 OFFSET 的支持不够完善。
  2. 保留关键字限制:例如 COUNT 等关键字不可用,需查阅具体保留字列表规避。

H2

H2 在语法支持及数据类型方面与 MySQL 的兼容性最高,基本无兼容性问题。

唯一注意点:默认返回字段名大写。通过配置可解决。

Spring 配置示例

<bean id="my_datasource" class="org.springframework.jdbc.datasource.SimpleDriverDataSource">
    <property name="driverClass" value="org.h2.Driver"/>
    <property name="url" value="jdbc:h2:mem;DATABASE_TO_UPPER=FALSE" />
</bean>

<jdbc:initialize-database data-source="my_datasource">
    <jdbc:script location="classpath:database-H2/olap.sql" />
    <jdbc:script location="classpath:database-H2/olap_data.sql" />

</jdbc:initialize-database>

结论

综合兼容性考虑,推荐使用 H2 作为嵌入式测试数据库,并通过 URL 参数关闭大小写转换以适配现有代码规范。

目录

  1. Spring 嵌入式内存数据库选型:H2、Derby 与 HSQL 对比
  2. 背景
  3. 内存数据库问题汇总
  4. Derby
  5. HSQL
  6. H2
  7. Spring 配置示例
  8. 结论

更多推荐文章

查看全部
  • C++ OpenGL 安装与使用指南
  • FPGA Flash 烧写步骤深度剖析(基于 Vivado)
  • MCP 插件配置指南:以 browser-tools-mcp 为例
  • Qwen2.5-0.5B 边缘计算实战:轻量级对话机器人部署指南
  • 自然语言处理在教育领域的应用与实战
  • AI 技术动态:Claude 记忆插件、LangChain DeepAgents 与具身智能进展
  • Go 语言核心特性与实战速成指南
  • 面壁智能 ChatDev:AI 智能体协作开发平台技术解析
  • Vue2+SpringBoot 在线商城 02-前后端登录功能对接
  • HarmonyOS6 RcButton 组件交互逻辑与事件处理机制
  • Ansible 批量部署 Nginx 实战指南
  • 轻量级推荐引擎:Redis ZUNIONSTORE 实现加权排序
  • 前端文本测量瓶颈突破:Pretext 用户态纯 TypeScript 引擎
  • OpenClaw 的 20 个精选 Skills 使用指南与实战技巧
  • MySQL 内置函数与内外连接详解
  • NOFX:基于大模型的开源加密货币量化交易系统实战
  • MySQL 用户管理与权限配置实战指南
  • VSCode 远程 SSH 环境下 Copilot 无法调用 Claude 模型修复方案
  • Flutter 三方库 ethereum_addresses 的鸿蒙化适配与地址校验实战
  • 前端关系图谱组件 relation-graph 实战指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online