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 即可看到效果。