Spring Boot 如何集成 SQL Server?

本文收录于「滚雪球学SpringBoot」专栏(全网一个名),手把手带你零基础入门Spring Boot,从入门到就业,助你早日登顶实现财富自由;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
环境说明:Windows 10 + IntelliJ IDEA 2021.3.2 + Jdk 1.8
前言
在现代企业级应用中,SQL Server 是一个广泛使用的关系型数据库管理系统(RDBMS)。Spring Boot 提供了很好的支持,使得集成 SQL Server 变得简单而高效。通过集成 Spring Data JPA 或 Spring JDBC,我们能够快速实现数据库操作。
本文将详细介绍如何在 Spring Boot 中集成 SQL Server,展示如何配置数据库连接、使用 Spring Data JPA 进行数据的增删改查(CRUD),并提供高级配置与优化技巧。
目录
- SQL Server 简介
- 1.1 什么是 SQL Server?
- 1.2 为什么使用 SQL Server?
- Spring Boot 集成 SQL Server
- 2.1 添加 SQL Server 依赖
- 2.2 配置数据库连接
- 2.3 配置 Spring Data JPA
- 🧑 数据操作与 CRUD 实现
- 3.1 创建实体类
- 3.2 创建 Repository 接口
- 3.3 实现 Service 层与控制器
- ️ 高级配置与优化
- 4.1 数据库连接池配置
- 4.2 数据源配置与性能优化
- 4.3 使用
@Transactional
进行事务管理
- 总结:构建高效的数据存储层
1. SQL Server 简介
1.1 什么是 SQL Server?
SQL Server 是由 Microsoft 开发的关系型数据库管理系统(RDBMS),广泛应用于企业级应用和大规模数据存储。它支持标准的 SQL 查询语言,并提供多种特性,如事务管理、数据完整性、查询优化、数据备份和恢复等。
1.2 为什么使用 SQL Server?
- 高性能:SQL Server 在处理复杂查询和大数据量时具有良好的性能表现,能够支持高并发的应用。
- 安全性:SQL Server 提供了强大的安全性功能,如加密、身份验证和授权管理。
- 数据恢复:支持数据库的备份与恢复,可以确保数据安全。
- 广泛的企业支持:作为 Microsoft 的产品,SQL Server 在企业环境中得到了广泛应用,具有丰富的技术支持和文档。
2. Spring Boot 集成 SQL Server
2.1 添加 SQL Server 依赖
首先,需要在 pom.xml
文件中添加 SQL Server 和 Spring Data JPA 的相关依赖:
<dependencies>
<!-- Spring Boot Starter Web -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Spring Boot Starter Data JPA -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- SQL Server JDBC Driver -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
</dependency>
</dependencies>
2.2 配置数据库连接
在 application.properties
或 application.yml
中配置 SQL Server 的连接信息:
# SQL Server Database Configuration
spring.datasource.url=jdbc:sqlserver://localhost:1433;databaseName=mydb;encrypt=false;trustServerCertificate=true
spring.datasource.username=sa
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.microsoft.sqlserver.jdbc.SQLServerDriver
# JPA Configuration
spring.jpa.database-platform=org.hibernate.dialect.SQLServerDialect
spring.jpa.hibernate.ddl-auto=update # 自动更新数据库结构
spring.jpa.show-sql=true # 显示 SQL 语句
spring.jpa.properties.hibernate.format_sql=true # 格式化 SQL
在 application.properties
中,spring.datasource.url
用于指定 SQL Server 数据库的连接 URL,spring.datasource.username
和 spring.datasource.password
用于连接的认证信息。
2.3 配置 Spring Data JPA
Spring Boot 会自动配置 DataSource
和 EntityManagerFactory
,因此你只需要确保数据库连接正确,Spring Data JPA 就会自动处理与数据库的交互。
🧑 3. 数据操作与 CRUD 实现
3.1 创建实体类
在 SQL Server 中创建一个 User
表,并将其映射为 JPA 实体类。
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String username;
private String password;
// Getters and Setters
}
在上面的代码中,User
类被映射为数据库中的一张表。@Entity
注解指定该类为实体类,@Id
和 @GeneratedValue
注解用于标识主键和自动生成主键。
3.2 创建 Repository 接口
接下来,创建一个继承 JpaRepository
的接口,提供基本的数据库操作。
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository<User, Long> {
User findByUsername(String username);
}
UserRepository
接口继承了 JpaRepository
,通过 findByUsername
方法可以查询指定用户名的用户。
3.3 实现 Service 层与控制器
接下来,我们创建一个 UserService
类来处理业务逻辑,并创建一个控制器 UserController
来处理 HTTP 请求。
创建 UserService
:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public User createUser(User user) {
return userRepository.save(user);
}
public User getUserById(Long id) {
return userRepository.findById(id).orElse(null);
}
public User updateUser(Long id, User user) {
if (userRepository.existsById(id)) {
user.setId(id);
return userRepository.save(user);
}
return null;
}
public void deleteUser(Long id) {
userRepository.deleteById(id);
}
public List<User> getAllUsers() {
return userRepository.findAll();
}
}
创建 UserController
:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@PostMapping
public User createUser(@RequestBody User user) {
return userService.createUser(user);
}
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.getUserById(id);
}
@PutMapping("/{id}")
public User updateUser(@PathVariable Long id, @RequestBody User user) {
return userService.updateUser(id, user);
}
@DeleteMapping("/{id}")
public void deleteUser(@PathVariable Long id) {
userService.deleteUser(id);
}
@GetMapping
public List<User> getAllUsers() {
return userService.getAllUsers();
}
}
在 UserController
中,我们创建了 CRUD 接口:POST /users
创建用户,GET /users/{id}
获取用户,PUT /users/{id}
更新用户,DELETE /users/{id}
删除用户,以及 GET /users
获取所有用户。
3.4 运行应用并测试
启动 Spring Boot 应用后,使用 Postman 或 Curl 进行 API 测试。例如:
POST /users
:创建用户GET /users/{id}
:获取用户PUT /users/{id}
:更新用户DELETE /users/{id}
:删除用户
️ 4. 高级配置与优化
4.1 数据库连接池配置
为了提升数据库的性能,特别是在高并发的情况下,我们可以配置数据库连接池。Spring Boot 默认使用 HikariCP 作为连接池,提供高效的连接管理。
spring.datasource.hikari.maximum-pool-size=10 # 设置最大连接池大小
spring.datasource.hikari.connection-timeout=30000 # 设置连接超时时间
spring.datasource.hikari.idle-timeout=600000 # 设置连接空闲时间
4.2 数据源配置与性能优化
在实际生产环境中,数据库的性能优化非常重要。除了连接池配置外,你还可以:
- 启用查询缓存,避免重复查询。
- 使用数据库索引,加速查询。
- 优化 SQL 查询,减少不必要的查询。
4.3 使用 @Transactional
进行事务管理
在处理涉及多次数据库操作的业务逻辑时,使用事务确保数据一致性。例如,在 UserService
中,我们可以使用 @Transactional
注解来确保数据操作的原子性:
@Transactional
public void someBusinessMethod() {
// 多个数据库操作
}
总结:构建高效的数据存储层
通过本教程,我们成功将 SQL Server 数据库集成到了 Spring Boot 项目中,并通过 Spring Data JPA 实现了用户的增删改查(CRUD)功能。我们还探索了如何配置数据库连接、优化数据库性能以及使用事务管理。
- Spring Data JPA 提供了简洁的数据库操作接口,减少了手写 SQL 的复杂度。
- SQL Server 提供了高效的关系型数据库存储,适合处理结构化数据。
- Spring Boot 的自动配置特性让 SQL Server 的集成变得非常简单和直观。
通过掌握这些内容,你可以轻松构建高效、可靠的数据库存储层,并为 Spring Boot 应用提供强大的数据支持!
🧧福利赠与你🧧
无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学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-
- 随机文章
- 热门文章
- 热评文章
- 探索自我:深入你的内心世界心理测试小游戏图片
- 揭秘人际关系的秘密:心理测试与实用策略人际关系心理测试题及答案
- 六年级数学练习与测试:提升解题技巧与数学思维六年级数练答案零五网
- 国际标准智商测试:探索智力评估的科学方法国际标准测试智商30题解答
- 免费测你的性格和《三叉戟》中的谁最像
- Java 服务网格:Istio 在微服务中的应用与挑战
- 【HarmonyOS 5】敏感信息本地存储详解
- 个性测试 测测你有多招人羡慕嫉妒
- 弹性公网IP:云时代的”智能通讯管家“