欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > Spring Boot中常用内嵌数据库(H2、HSQLDB、Derby)的对比,包含配置示例和关键差异总结

Spring Boot中常用内嵌数据库(H2、HSQLDB、Derby)的对比,包含配置示例和关键差异总结

2025/5/23 19:28:55 来源:https://blog.csdn.net/zp357252539/article/details/146798922  浏览:    关键词:Spring Boot中常用内嵌数据库(H2、HSQLDB、Derby)的对比,包含配置示例和关键差异总结

以下是Spring Boot中常用内嵌数据库的对比,包含配置示例和关键差异总结:


一、主流内嵌数据库对比

1. H2 数据库

特点

  • 支持内存模式(速度快)和文件模式(数据持久化)。
  • 支持SQL方言(兼容MySQL/PostgreSQL/Oracle)。
  • 提供Web控制台(方便调试)。
    适用场景
  • 需要Web控制台的测试环境。
  • 需要高性能内存数据库。

配置示例

# application.properties
# 内存模式(数据不持久化)
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=# 启用H2 Web控制台(访问路径:http://localhost:8080/h2-console)
spring.h2.console.enabled=true

代码示例

// 测试类(Junit)
@RunWith(SpringRunner.class)
@SpringBootTest
public class H2Test {@Autowiredprivate JdbcTemplate jdbcTemplate;@Testpublic void testH2() {jdbcTemplate.update("CREATE TABLE test (id INT, name VARCHAR(255))");jdbcTemplate.update("INSERT INTO test VALUES (1, 'H2')");List<String> names = jdbcTemplate.queryForList("SELECT name FROM test", String.class);assertEquals("[H2]", names.toString());}
}

2. HSQLDB(HyperSQL)

特点

  • 内存模式和文件模式支持。
  • 轻量级,启动速度快。
  • 支持SQL标准。
    适用场景
  • 需要轻量级内存数据库的测试环境。
  • 对资源占用敏感的场景。

配置示例

# application.properties
spring.datasource.url=jdbc:hsqldb:mem:testdb
spring.datasource.driver-class-name=org.hsqldb.jdbc.JDBCDriver
spring.datasource.username=SA
spring.datasource.password=

代码示例

// 测试类(与H2类似)
@RunWith(SpringRunner.class)
@SpringBootTest
public class HSQLDBTest {@Autowiredprivate JdbcTemplate jdbcTemplate;@Testpublic void testHSQLDB() {jdbcTemplate.update("CREATE TABLE test (id INT, name VARCHAR(255))");// 其他操作类似H2}
}

3. Derby 数据库

特点

  • 内存模式和文件模式支持。
  • 支持多用户访问。
  • 由Apache维护,兼容JDBC。
    适用场景
  • 需要多用户支持的测试环境。
  • 对JDBC兼容性要求高的场景。

配置示例

# application.properties
spring.datasource.url=jdbc:derby:memory:testdb;create=true
spring.datasource.driver-class-name=org.apache.derby.jdbc.EmbeddedDriver
spring.datasource.username=app
spring.datasource.password=app

代码示例

// 测试类(与H2类似)
@RunWith(SpringRunner.class)
@SpringBootTest
public class DerbyTest {@Autowiredprivate JdbcTemplate jdbcTemplate;@Testpublic void testDerby() {jdbcTemplate.update("CREATE TABLE test (id INT, name VARCHAR(255))");// 其他操作类似H2}
}

二、关键差异对比表格

特性H2HSQLDBDerby
内存模式支持✔️✔️✔️
文件模式支持✔️(持久化到文件)✔️✔️
Web控制台✔️(需配置)
SQL方言兼容性✔️(支持MySQL/PostgreSQL/Oracle)部分支持标准SQL
性能高(内存模式最快)中等中等
社区活跃度高(广泛使用)中等中等
适用场景测试、开发环境(需Web控制台)轻量级测试多用户测试或JDBC兼容性需求

三、选择建议

  1. 优先选择H2

    • 需要Web控制台时首选。
    • 性能要求高且需模拟不同数据库方言(如测试MySQL逻辑)。
  2. 选择HSQLDB

    • 内存模式轻量级场景。
    • 对资源占用敏感时。
  3. 选择Derby

    • 需要多用户访问或严格JDBC兼容性。
    • 项目已有Derby依赖时。

四、注意事项

  • 仅用于测试环境:内嵌数据库不适合生产环境,数据可能丢失(内存模式)。
  • 事务处理差异:某些内嵌数据库在事务支持上有限(如H2默认自动提交)。
  • 依赖管理:Spring Boot Starter Parent会自动引入内嵌数据库依赖,无需额外配置。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词