前面有写JDBC直连数据库,需要创建连接,使用完数据库之后要关闭数据库连接,连接池应运而生。
数据库连接池数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。(摘自百度百科)
java的核心接口有DataSource、XADataSource、ConnectionPoolDataSource,接口CommonDataSource定义通用方法
DataSourceXADataSource连接到此DataSource对象所表示的物理数据源的工厂。作为DriverManager工具的替代,DataSource对象是获得连接的首选方式。实现DataSource接口的对象通常会在基于Java™命名和目录(JNDI) API的命名服务中注册。 DataSource接口由驱动程序供应商实现。有三种类型的实现: 基本实现——生成标准的Connection对象 连接池实现——生成一个自动参与连接池的Connection对象。此实现使用中间层连接池管理器。 分布式事务实现——产生一个可以用于分布式事务的Connection对象,并且几乎总是参与连接池。此实现使用中间层事务管理器,并且几乎总是使用连接池管理器。 DataSource对象具有可以在必要时修改的属性。例如,如果数据源移动到不同的服务器,则可以更改该服务器的属性。其好处在于,由于数据源的属性可以更改,因此不需要更改访问该数据源的任何代码。 一个通过DataSource对象访问的驱动程序不注册自己到DriverManager。相反,通过查找操作检索DataSource对象,然后用于创建Connection对象。在基本实现中,通过DataSource对象获得的连接与通过DriverManager工具获得的连接是相同的。 DataSource的实现必须包含一个公共的无参数构造函数。
用于创建一个物理数据库连接,可以用在一个分布式事务
XAConnection getXAConnection() throws SQLException; XAConnection getXAConnection(String user, String password) throws SQLException;ConnectionPoolDataSource
用于创建一个物理数据库连接,可以用在一个连接池
CommonDataSourceInterface that defines the methods which are common between DataSource, XADataSource and ConnectionPoolDataSource.
常用数据连接池目前常用的数据连接池有Druid,都是属于DataSource的实现类。
Springboot默认数据源目前springboot默认的数据连接池为hikari
需要引入spring-boot-starter-jdbc依赖,主要提供了三个功能,第⼀个就是对数据源的装配,第⼆个就是提供⼀个JdbcTemplate简化使⽤,第三个就是事务
application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.username=question spring.datasource.password=question123 spring.datasource.url=jdbc:mysql://localhost:3306/questions?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
springboot通过自动配置,会自动生成名为datasource的bean,可以通过创建自己的jdbcTemplate工具类,也可以spring自带JDBCTemplate
JDBCTemplateSpring Boot 提供配置好了 JdbcTemplate 使用时注⼊即可使⽤,其中⾃动配置是依赖 org.springframework.boot.autoconfigure.jdbc 包下的 JdbcTemplateConfiguration 类
通过jdbcTemplate就能进行数据库操作
List



