SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明
创作时间:
作者:
@小白创作中心
SQLite本地数据库的简介和适用场景——集成SpringBoot的图文说明
引用
CSDN
1.
https://blog.csdn.net/weixin_46029085/article/details/144682958
SQLite是一种轻量级、嵌入式的关系型数据库管理系统,特别适合嵌入式开发、桌面软件、快速开发和测试等场景。本文将详细介绍SQLite的特点、与MySQL的对比以及如何在SpringBoot项目中集成SQLite。
1. SQLite 简介
SQLite 是一种轻量级、嵌入式的关系型数据库管理系统,具有以下特点:
- 单文件存储:所有的数据库对象(如表、索引、视图等)都存储在一个普通的文件中,便于移动和备份。
- 无服务器架构:无需独立的服务器进程,数据库引擎直接嵌入应用程序中运行,极大地简化了部署。
- 零配置:不需要安装或配置,直接拷贝文件即可使用。
- 支持事务:完全支持 ACID(原子性、一致性、隔离性、持久性)事务机制,保证数据完整性。
- 跨平台:SQLite 数据库文件可以在不同操作系统之间无缝迁移。
- 开放源码:SQLite 是开源的,遵循公共领域协议,免费供个人和商业项目使用。
2. 对比MySQL的相对优缺点
SQLite 的相对优点
- 轻量级与便捷性
- 无服务器架构:SQLite 不需要安装服务器,也无需运行单独的服务程序,直接嵌入到应用程序中。
- 零配置:使用时无需复杂的配置,只需引入库文件即可开始操作。
- 单文件存储
- SQLite 的数据库存储为单个文件,便于迁移和备份。
- 适合嵌入式设备或小型应用程序。
- 资源占用小
- SQLite 的代码库很小(通常小于 1MB),对系统资源的占用极低。
- 特别适合内存和存储空间有限的设备(如 IoT 设备、移动应用)。
- 跨平台兼容性
- SQLite 的数据库文件在不同操作系统之间完全兼容,无需额外调整。
- 易用性高
- 适合原型设计和快速开发,减少环境配置成本。
- 提供简单的 API,适合初学者和小型项目。
SQLite 的相对缺点
- 性能限制
- 不擅长处理高并发场景,尤其是多写入操作时可能出现锁定问题。
- 在大型数据集(如 GB 级或更大数据)和复杂查询上性能不如 MySQL。
- 功能限制
- 不支持存储过程、触发器(功能较简单)、视图等高级功能。
- 不具备复杂的权限管理机制,没有用户角色划分,适合单用户场景。
- 安全性较低
- SQLite 没有内置的用户管理和身份验证机制,依赖应用程序自身控制访问权限。
- 不适合需要高安全性或多用户权限管理的场景。
- 缺乏扩展性
- SQLite 设计为单机数据库,不支持分布式架构或主从复制。
- 无法满足大规模企业级应用的需求。
- 并发能力不足
- SQLite 采用数据库级别锁,写入操作时会阻塞其他操作,无法处理高并发写入需求。
- 相比 MySQL 的行级锁,事务管理能力较弱。
- 数据类型较少
- 没有date、decimal、json等数据类型。(有处理时间的函数)
3. 应用场景
- 嵌入式开发:广泛用于移动应用(如 Android 和 iOS)、IoT 设备等。
- 桌面软件:如浏览器(Google Chrome、Firefox)、媒体播放器等。
- 快速开发和测试:适合小型应用或开发中的原型设计。
- 只读数据库:适合存储小型静态数据(如配置文件或数据字典)。
- 做配置文件:一些桌面端、APP、linux应用服务的配置文件。
4. 集成SpringBoot
使用idea快速创建一个SpringBoot项目
在pom.xml中
中添加sqlite的依赖
<!-- spring-boot-starter-jdbc 和 SQLite 驱动 sqlite-jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.45.3.0</version>
</dependency>
- 在application.yaml中添加sqlite的配置
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: org.sqlite.JDBC
url: "${database.jdbc}:${database.path}"
# 分别单独指定jdbc和path方便获取对应的值
database:
jdbc: "jdbc:sqlite"
path: "database.db"
- 配置DataSourceConfig,方便全局使用
import ...
@Configuration
@Slf4j
public class DataSourceConfig {
@Value("${database.jdbc}")
private String jdbc;
@Value("${database.path}")
private String path;
@Value("${spring.datasource.driver-class-name}")
private String driverClassName;
@Value("${project.version}")
private String projectVersion;
@Autowired
private ServletContext servletContext;
@SneakyThrows
@Bean
public DataSource dataSource() {
/**
1、指定sqlite数据文件的具体位置,或者相对位置。
2、初始化时,如果文件不存在、则创建文件、创建相应的数据表(初始化数据库)。
3、配置dataSource数据源,方便全局使用。
4、其他逻辑...
**/
}
}
- Application启动类配置
/* 排除自动配置数据源 */
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
- 参数
exclude = {DataSourceAutoConfiguration.class}:
默认情况下,Spring Boot 会根据类路径中的依赖自动配置数据源(比如HikariDataSource)。不需要数据库或手动配置数据源,可以通过exclude参数排除自动配置类。这里排除了DataSourceAutoConfiguration,表示应用不会自动配置数据源。
- 运行SpringBoot项目
/* 控制台输出 */
Tomcat started on port 8080 (http) with context path ''
Started Application in 3.21 seconds (process running for 4.6)
=================== spring boot 启动成功! =====================
- 在项目的目录下已经生成了SQLite的数据文件,至此SpringBoot集成SQLite完成
结语
SQLite的设计目标是轻量、高效、易用、方便迁移,适合需要嵌入式数据库的应用程序和小型项目。
热门推荐
曾巩散文特色:平实质朴中的典雅流畅
新疆人口很少?几十年增长1800多万
高血压患者必看:饮食禁忌大揭秘
榴莲真的是水果之王吗?揭开一段榴莲在欧洲的“炒作”史
我为了“水果之王”专门出了趟国,并挖出了最好吃的5大产地,中国也有
牙痛怎么办?快速缓解牙痛的实用方法与饮食建议
牙疼的时候能进行治疗吗?
除夕围炉讲究多,正月活动很丰富!来看闽南的春节习俗
(新春走基层)闽台同胞厦门百年老街共拾民俗乐趣
不冷场经典话题:家庭聚会上,哪些话题能让气氛更加融洽欢乐?
意大利佛罗伦萨旅游攻略 | Firenze景点介绍 / 机场交通 / 老城建筑
公益创投如何确保资金透明?
2024健康中国传播大会:公益节创新助力公众健康意识提升
《黑客帝国》:虚拟现实中的"宇宙之外"
多世界诠释:揭秘多元宇宙的奥秘
APG IV:揭秘植物分类黑科技
APG IV系统:被子植物分类的权威指南
向太阳要能量只是假想?戴森球将成宇宙二型文明标识
东山景区:苏州周边最美自然景观打卡地
血压中的"高压"和"低压",哪个升高更危险?90%的人都不知道!
刘雨岑瓷板画:珠山八友的艺术瑰宝
珠山八友瓷板画真品图片和鉴定方法(瓷板画收藏必看)
苏州必打卡景点大揭秘:拙政园、虎丘、留园、周庄、同里古镇
健康中国行动:公益节里的健康守护
交通攻略:如何选择最适合的交通工具旅行
地震灾害公共交通应急
春联创作指南:四大要点助你写出吉祥如意的对联
秋冬季节咽喉炎频发,药师来支招啦!
阿普唑仑是什么药?作用机制与使用注意事项
家常美味_芹菜炒肉,营养与美味的完美融合