1. 概述

在这篇简明教程中,我们将介绍如何在启用了 JPA 的 Spring Boot 项目中集成 SQLite 数据库。

虽然 Spring Boot 对一些主流的内存数据库(如 H2、HSQL)提供了开箱即用的支持,但 SQLite 的集成稍微复杂一些,需要我们手动做一些配置。

下面我们就来看看具体怎么做。

2. 项目准备

我们以一个已有的 Spring Data Rest 示例项目为基础进行演示。

首先,在 pom.xml 中添加 SQLite 的 JDBC 驱动依赖:

<dependency>
    <groupId>org.xerial</groupId>
    <artifactId>sqlite-jdbc</artifactId>
    <version>3.25.2</version>
</dependency>

这个依赖提供了使用 JDBC 访问 SQLite 所需的核心能力。

3. 配置 SQLite 方言(Dialect)

从 Hibernate 6 开始,官方已经支持 SQLite 方言。

我们需要在 pom.xml 中引入 Hibernate 社区方言包:

<dependency>
    <groupId>org.hibernate.orm</groupId>
    <artifactId>hibernate-community-dialects</artifactId>
</dependency>

然后在配置文件中指定使用的方言:

spring.jpa.database-platform=org.hibernate.community.dialect.SQLiteDialect

4. 数据源配置

由于 Spring Boot 并没有为 SQLite 提供默认的自动配置支持,所以我们需要手动配置 DataSource

@Autowired Environment env;

@Bean
public DataSource dataSource() {
    final DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(env.getProperty("driverClassName"));
    dataSource.setUrl(env.getProperty("url"));
    dataSource.setUsername(env.getProperty("user"));
    dataSource.setPassword(env.getProperty("password"));
    return dataSource;
}

接着,在 persistence.properties 文件中添加如下配置项:

driverClassName=org.sqlite.JDBC
url=jdbc:sqlite:memory:myDb?cache=shared 
username=sa 
password=sa
spring.jpa.database-platform=org.hibernate.community.dialect.SQLiteDialect 
hibernate.hbm2ddl.auto=create-drop
hibernate.show_sql=true

⚠️ 注意:为了确保多个数据库连接之间能看到彼此的修改,必须将 cache 设置为 shared

✅ 这样一来,项目启动时就会初始化一个名为 myDb 的内存数据库,后续的 Spring Data Rest 配置就可以直接使用它了。

5. 总结

本文基于一个标准的 Spring Data Rest 项目,演示了如何将其数据源切换为 SQLite。虽然过程稍显繁琐,但只要配置得当,SQLite 在轻量级应用场景下依然非常实用。

项目源码可在 GitHub 获取。运行命令如下:

mvn -Dspring.profiles.active=sqlite spring-boot:run

然后访问:http://localhost:8080 即可看到效果。


原始标题:Spring Boot With SQLite | Baeldung