文章目录
- 概念
- 优点
- 使用原则
- 类型
-
- C3P0 连接池
-
- 使用步骤
- 常见配置项
- Druid 连接池
-
- 使用步骤
- DBCP 连接池
-
- 使用步骤
- 常见配置项
- JdbcTemplate
-
- 概念
- 使用步骤
概念
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最⼤空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。
简单来说,其实就是一个容器(集合),存放数据库连接的容器。
当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器中获取连接对象,用户访问完之后,会将连接对象归还给容器。
优点
- 节约资源
- 用户访问高效
使用原则
1、应用启动时,创建初始化数量的连接。
2、当申请时无连接可用或者达到指定的最小连接数,按增量参数值创建新的连接。
3、为确保连接池中最小的连接数的策略:
- 动态检查:定时检查连接池,一旦发现数量小于最小连接数,则补充对应的新连接,保证连接池正常运转
- 静态检查:空闲连接不足时,系统才检测是否达到最小连接数
4、按需分配,用过归还,空闲超时释放,获取超时报错。
类型
C3P0 连接池
使用步骤
1、导入包:c3p0-0.9.5.2.jar、mchange-commons-java-0.2.11.jar
2、定义配置文件
配置文件名称:c3p0-config.xml 或者 c3p0.properties(固定)
配置文件位置:src(类路径)
3、 C3P0提供核心工具类:ComboPooledDataSource,如果要使用连接池,必须创建该类的实例对象。
- new ComboPooledDataSource(“名称”); 使用配置文件“命名配置”
- new ComboPooledDataSource(); 使用配置文件“默认配置”
常见配置项
Druid 连接池
使用步骤
1、导入jar包:druid-1.1.16.jar
2、定义配置文件
配置文件名称:任意名称.properties
配置文件位置:src下的任意位置
3、配置文件内容:
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/database
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000
4、加载配置文件
Properties pros = new Properties();
try {
pros.load(DruidUtils.class.getResourceAsStream("druid.properties"));
} catch (IOException e) {
e.printStackTrace();
}
5、获取数据库连接池对象:通过工厂来来获取 DruidDataSourceFactory。
DataSource ds = DruidDataSourceFactory.createDataSource(pros);
6、获取连接:getConnection
Connection conn = ds.getConnection();
DBCP 连接池
使用步骤
1、导入jar包:
commons-dbcp2-2.1.1.jar
commons-pool2-2.4.2.jar
2、定义配置文件
配置文件名称:*.properties
配置文件位置:任意,建议src(classpath/类路径)
3、加载配置文件:
Properties pros = new Properties();
try {
pros.load(DruidUtils.class.getResourceAsStream("dbcp.properties"));
} catch (IOException e) {
e.printStackTrace();
}
4、获取数据库连接池对象:通过工厂类来获取 BasicDataSourceFactory
DataSource dataSource = BasicDataSourceFactory.createDataSource(pros);
常见配置项
JdbcTemplate
概念
JdbcTemplate是通过 SQL 语句 + 参数,模板化了编程。它是 Spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装。
除了JdbcTemplate,Spring 框架还为我们提供了很多的操作模板类。
使用步骤
1、导入jar包:
2、创建JdbcTemplate对象。依赖于数据源DataSource
JdbcTemplate template = new JdbcTemplate(ds);
3、调用JdbcTemplate的方法来完成CRUD的操作:
update():执⾏DML语句。增、删、改语句
queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value将这条记录封装为一个map集合
注意:这个方法查询的结果集长度只能是1
queryForList():查询结果将结果集封装为list集合
注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中
query():查询结果,将结果封装为JavaBean对象
query的参数:RowMapper
一般使用 BeanPropertyRowMapper 实现类。
可以完成数据到JavaBean 的自动封装
new BeanPropertyRowMapper<类型>(类型.class)
queryForObjec():查询结果,将结果封装为对象
一般用于聚合函数的查询