Spring Boot 与 H2 数据库:轻量级应用的理想选择!

🏆本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8
📜 前言:为什么选择H2数据库?
在现代软件开发中,尤其是在构建小型应用、原型开发、单元测试和快速验证场景时,选择一个合适的数据库变得尤为重要。对于这些场景,传统的数据库管理系统可能会显得过于庞大和复杂,而H2数据库作为一个轻量级的嵌入式数据库,其出色的性能、易用性和高灵活性使它成为开发和测试中的理想选择。
H2数据库是一个开源的、纯Java编写的关系型数据库,它提供了内存模式和持久化模式两种运行模式,非常适合在Spring Boot项目中进行集成。无论是快速的原型开发,还是高效的单元测试,H2数据库都能够极大地简化数据库的配置与管理,快速启动应用,且性能表现优异。
在Spring Boot中,H2数据库的集成非常简单,我们可以通过配置文件轻松地切换内存模式与持久化模式,为开发者提供了灵活的数据存储选择。本文将详细介绍如何在Spring Boot中与H2数据库结合,构建轻量级应用,如何根据不同的场景配置内存模式与持久化模式,以及如何利用H2数据库进行高效的开发与测试。
🧑💻 1️⃣ 基于Spring Boot与H2数据库构建轻量级应用
🛠️ 什么是H2数据库?
H2是一个轻量级、快速、开源的关系型数据库,它的特点包括:
- 内存模式支持:H2可以完全在内存中运行,无需磁盘存储,适合用于临时数据存储或快速开发验证。
- 持久化模式支持:H2也可以将数据持久化到磁盘中,适合长期存储小型应用的数据。
- 高性能:作为内存数据库,H2具有非常高的读写性能,启动非常迅速,且对内存和CPU的占用非常低。
- SQL兼容:H2支持标准SQL,能够兼容大多数基于SQL的数据库操作。
🛠️ 步骤 1:引入H2数据库依赖
在Spring Boot项目中集成H2数据库,首先需要在pom.xml
中添加H2数据库的相关依赖:
<dependencies>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version> <!-- H2数据库的版本 -->
<scope>runtime</scope> <!-- 仅在运行时需要 -->
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId> <!-- JPA支持 -->
</dependency>
</dependencies>
h2
:这是H2数据库的核心依赖,包含了内存数据库和持久化数据库的实现。spring-boot-starter-data-jpa
:这是Spring Boot对JPA(Java Persistence API)的支持,自动配置了数据库连接、事务管理等功能,简化数据库操作。
🛠️ 步骤 2:配置Spring Boot与H2数据库
在application.properties
中配置H2数据库的连接信息。Spring Boot支持内存模式和持久化模式两种配置方式。
内存模式配置
内存模式下的H2数据库不会在磁盘上持久化数据,适合用于临时存储和开发环境,应用关闭后数据会丢失。
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1 # 使用内存模式
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa # 默认用户名
spring.datasource.password= # 默认无密码
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect # 设置Hibernate方言
spring.h2.console.enabled=true # 启用H2数据库控制台
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
:表示H2数据库在内存中运行,数据库名为testdb
,DB_CLOSE_DELAY=-1
表示数据库在应用关闭后不删除。spring.h2.console.enabled=true
:启用H2控制台,能够通过浏览器访问http://localhost:8080/h2-console
查看和操作数据库。
持久化模式配置
持久化模式下的H2数据库会将数据保存到文件系统中,关闭应用时数据不会丢失,适合用于小型应用。
spring.datasource.url=jdbc:h2:file:./data/testdb;DB_CLOSE_ON_EXIT=FALSE # 使用文件模式
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
jdbc:h2:file:./data/testdb
:表示H2数据库文件存储在./data/testdb
路径下。DB_CLOSE_ON_EXIT=FALSE
:表示数据库在应用关闭后不会自动关闭,数据会被持久化。
🛠️ 步骤 3:创建实体类
在Spring Boot中,通常使用JPA(Java Persistence API)与数据库进行交互。JPA可以将Java对象映射到数据库表。以下是一个简单的实体类示例:
import javax.persistence.Entity;
import javax.persistence.Id;
@Entity
public class User {
@Id
private Long id;
private String name;
private String email;
// Getters and Setters
}
代码解析:
@Entity
:标注该类为JPA实体类,Spring Boot会自动为其生成对应的数据库表。@Id
:标注为主键字段,Spring Boot会自动生成主键ID。
🛠️ 步骤 4:创建Repository接口
Spring Data JPA提供了便捷的数据访问方式,我们可以创建一个Repository
接口来简化数据库操作。
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
User findByName(String name); // 根据名字查询用户
}
代码解析:
JpaRepository<User, Long>
:继承自JpaRepository
,它提供了CRUD操作的实现,无需手动编写SQL查询。findByName
:自定义查询方法,按name
字段查找用户。
🛠️ 步骤 5:创建控制器
接下来,创建一个RESTful控制器类,使用UserRepository
进行数据库操作并返回结果:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("/users")
public List<User> getUsers() {
return userRepository.findAll(); // 获取所有用户
}
}
代码解析:
@RestController
:标注该类为RESTful控制器,Spring Boot会自动处理请求和响应。userRepository.findAll()
:查询所有用户数据并返回。
🛠️ 步骤 6:访问H2数据库控制台
Spring Boot内置了H2数据库控制台。启动Spring Boot应用后,可以通过浏览器访问http://localhost:8080/h2-console
来查看和管理数据库。在登录时,使用配置文件中设置的数据库URL(jdbc:h2:mem:testdb
)、用户名(sa
)和密码(空密码)即可。
🧑💻 2️⃣ 使用Spring Boot与H2数据库进行开发与测试
🛠️ H2数据库的内存模式与持久化模式
H2数据库支持两种运行模式,内存模式和持久化模式,开发者可以根据需要选择合适的模式:
内存模式
- 适用于开发和测试环境,数据存储在内存中,关闭应用后数据丢失。
- 配置:
jdbc:h2:mem:testdb
持久化模式
- 适用于小型应用,数据持久化到文件中,应用关闭后数据不会丢失。
- 配置:
jdbc:h2:file:./data/testdb
🛠️ 步骤 1:内存模式配置
内存模式下的H2数据库非常适合用于开发和测试,因为它不需要实际的磁盘存储,启动非常快速。你可以通过以下方式配置内存模式:
spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1
:表示使用内存数据库testdb
,DB_CLOSE_DELAY=-1
表示数据库在关闭后不删除。
🛠️ 步骤 2:持久化模式配置
持久化模式下的H2数据库将数据保存到文件系统中,在关闭应用时,数据依然保留。可以通过以下方式配置持久化模式:
spring.datasource.url=jdbc:h2:file:./data/testdb;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
jdbc:h2:file:./data/testdb
:表示H2数据库文件存储在本地,路径为./data/testdb
。DB_CLOSE_ON_EXIT=FALSE
:表示数据库在应用关闭后不会自动关闭,数据会被持久化。
🛠️ 步骤 3:配置测试模式
H2数据库非常适合用于单元测试。在Spring Boot中,可以通过配置@DataJpaTest
注解来创建一个基于H2的测试环境。以下是一个简单的测试类:
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
@DataJpaTest
public class UserRepositoryTests {
@Autowired
private UserRepository userRepository;
@Test
public void testCreateUser() {
User user = new User();
user.setName("John Doe");
user.setEmail("john.doe@example.com");
userRepository.save(user);
User foundUser = userRepository.findByName("John Doe");
assertEquals("John Doe", foundUser.getName());
}
}
代码解析:
@DataJpaTest
:这是Spring Boot测试的一个注解,它会自动配置H2数据库,加载JPA相关配置。userRepository.save(user)
:保存一个用户。userRepository.findByName("John Doe")
:根据name
查找用户。
🚀 小结:构建轻量级应用与高效测试
通过本文的介绍,我们学习了如何将Spring Boot与H2数据库结合使用,构建一个轻量级的应用程序。H2数据库提供了内存模式和持久化模式两种灵活的选择,适合于开发、测试和小型应用。我们还介绍了如何在Spring Boot中使用JPA与H2数据库进行开发和测试,如何在内存模式和持久化模式下进行配置。
Spring Boot与H2的结合,使得开发人员可以在短时间内搭建一个完整的应用,并能够利用H2数据库进行高效的测试,快速验证功能。在开发过程中使用内存模式,而在生产环境中则使用持久化模式,以实现更持久的数据存储。
🚀 总结:轻量级数据库的完美选择
H2数据库作为一个轻量级的关系型数据库,具有非常高的灵活性和易用性,适合用于小型应用、开发环境、原型开发以及单元测试。通过Spring Boot与H2的集成,开发者可以快速构建和测试应用,并充分利用Spring Boot的自动化配置和JPA功能。
无论是在开发、测试,还是小型应用中,H2数据库都能提供极大的便利。通过内存模式,我们能够快速搭建测试环境;而持久化模式则保证了长期数据存储的稳定性。希望本文能够帮助你更好地理解和利用Spring Boot与H2数据库,为你在轻量级应用和测试中的使用提供指导。
🧧福利赠与你🧧
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」专栏(全网一个名),bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。
最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。
同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。
✨️ Who am I?
我是bug菌(全网一个名),CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云多年度十佳博主/价值贡献奖,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-
- 点赞
- 收藏
- 关注作者
评论(0)