整合JDBC
jdbc是Spring极其重要的配置。而在SpringBoot中,只需要一个启动器即可:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
但是,数据库驱动的依赖是不能省的,因为SpringBoot压根不知道我们用的什么数据库。这里我们还是使用最熟悉的MySql:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
整合事务
我们应该如何配置事务呢?
答案是什么都不用做。刚刚的spring-boot-starter-jdbc启动器已经帮我们做好了一切。
我们应该如何使用事务呢?
这是个很傻的问题 。在对应的类或方法上写上我们熟知的@Transactional 注解 即可。
@Service
public class UserService {
// 查询操作不需要进行事务控制
public User queryById(Long id) {
// ...
}
// 增删改操作需要进行事务控制
@Transactional
public void saveUser() {
// ...
}
}
整合连接池
这篇文章讲解了三种链接池的配置(1+2):《【SpringBoot】注解属性注入——图解三种配置方式》
也许你已经觉得SpringBoot提供的配置方式已经无比简单,但是,还可以更简单。因为SpringBoot自带默认的 Hikari连接池 。
我们想要使用HikariCP,要做的只有一件事——在application.yaml中进行简单的参数配置:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/loliDB
username: root
password: 123456
补充:关于Hikari连接池
Hikari连接池 由日本开发者完成。提到Hikari,就不得不把它与国内阿里的 C3P0连接池 进行比较。事实上,二者也曾经有过论战。
Hikari与c3p0都是开源的。在效率性能上,Hikari秒杀c3p0,前者的速度可达后者的数百倍!那么,为什么Hikari这么快?
- 字节码更加精简,所以可以加载更多的代码到内存。
- 实现了一个无锁的集合类型,来减少并发造成的资源竞争。
- 使用了自定义的数组类型,相对于ArrayList极大提升了性能。
- 针对CPU的时间片算法进行优化,尽可能在一个时间片里完成各种操作。
其实Hikari与c3p0的侧重点是不同的,Hikari追求极致的速度,c3p0调和了速度与安全。其实不必纠结于如何选择两款产品,因为对于大多数的业务来说,性能的瓶颈也不在连接池。
(有参考:https://www.jianshu.com/p/0633b319503c)
🍃 Spring
⭐️ Suki