数据库连接池-简介&Druid使用(简单实战入门)
数据库连接池简介
- 数据库连接池是一个容器,负责分配、管理数据库连接(Connection)
- 它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;
- 释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏
- 好处:
- 资源重用
- 提示系统响应速度
- 避免数据库连接遗漏
数据库连接池实现
-
标准接口:Data Source
- 官方(SUN)提供的数据库连接池标准接口,由第三方组织实现此接口
- 功能: 获取连接
Connection getConnection()
-
常见的数据库连接池:
- DBCP
- C3P0
- Druid
-
Druid(德鲁伊)
- Druid连接池是阿里巴巴开源的数据库连接池项目
- 功能强大性能优秀,是java最好的数据库连接池之一
Driud使用步骤
-
导入jar包 druid-1.1.12.jar
-
定义配置文件
此处我选择在与我druid同一个文件目录下创建配置文件
详细配置文件代码
driverClassName=com.mysql.cj.jdbc.Driver url=jdbc:mysql:///test?useSSL=false&useServerPrepStmts=true&allowPublicKeyRetrieval=true username=root password=123 #初始化连接数量 initialSize=5 #最大连接数 maxActive=10 #最大等待时间 maxWait=3000
-
此处注意”test“为数据库名称,用时注意修改成自己相应的数据库名称;
我这边遇到过的问题是如果你使用的SQL是8.0以上的话需要使用
driverClassName=com.mysql.cj.jdbc.Driver
如果使用的SQL是8.0以下则使用
driverClassName=com.mysql.jdbc.Driver
如果不正确可能会报错
-
加载配置文件
小技巧:注意路径这边可以先注释其他代码,直接打印,来查看当前文件路径
System.out.println(System.getProperty("user.dir"));
此时我的路径为
此时选取相对路径
我们在文件中打开后,只选取后面的路径,即相对路径如下即可
//3.加载配置文件 Properties prop = new Properties(); prop.load(new FileInputStream("jdbc/jdbcdame/src/main/java/com/druid.properties"));
-
获取数据库连接池对象
//4.获取连接池对象 DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
-
获取连接
//5.获取数据库连接Connenntion
Connection connection = dataSource.getConnection();
System.out.println(connection);//测试
最后运行即可,成功连接,打印出JDBC的连接对象,结果如图
最后这里附上全部代码
package com.itheima.druid;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.FileInputStream;
import java.sql.Connection;
import java.util.Properties;
/*
* Druid数据库连接池演示
* */
public class DruidDemo {
public static void main(String[] args) throws Exception {
//1.导入jar包
//2.定义配置文件
//3.加载配置文件
Properties prop = new Properties();
prop.load(new FileInputStream("jdbc/jdbc-dame/src/main/java/com/druid.properties"));
//4.获取连接池对象
DataSource dataSource = DruidDataSourceFactory.createDataSource(prop);
//5.获取数据库连接Connenntion
Connection connection = dataSource.getConnection();
System.out.println(connection);
// System.out.println(System.getProperty("user.dir"));
}
}