java之Druid连接池介绍和使用方法 简单易懂
2023-12-22 11:49:20
一、什么是数据库连接池?
数据库连接池是一个存储数据库连接的缓冲区,用于重复使用这些连接,以避免在每次请求时都创建新的数据库连接。连接到数据库的过程是相对耗时的,因此连接池可以显著提高应用程序的性能。它们还有助于防止应用程序超负荷地创建太多数据库连接,从而减轻数据库服务器的负担。
二、 为什么选择Druid连接池?
Druid是一个开源的、高性能的数据库连接池,它在很多方面超越了其他连接池。
三、连接池的jar包
根据自己下载的软件版本进行下载jar包版本
https://repo1.maven.org/maven2/com/alibaba/druid/
四、连接池的使用
1、配置及使用配置文件连接mysql数据库
配置文件 properties
代码如下:
# 加载驱动
driverClassName = com.mysql.cj.jdbc.Driver
# url
url = jdbc:mysql://127.0.0.1:3306/studentdb
# 用户名
username = root
# 密码
password = sasa
# 初始连接数
initialSize = 10
# 最小连接
minIdle = 5
# 最大连接
maxActive = 50
# 超时时间
maxWait = 5000
使用代码如下:
public void druidshow1() throws Exception {
//加载配置文件
Properties properties = new Properties();
properties.load(new FileInputStream("src\\druid.properties"));
//在工厂中创建一个数据源,数据源的连接信息来源于配置文件中
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
Connection conn = dataSource.getConnection();
ResultSet r = conn.prepareStatement("select count(*) from student").executeQuery();
if (r.next()){
System.out.println(r.getInt(1));
}
r.close();
conn.close();
}
运行结果:
2、使用Map集合使用Druid
代码如下:
public void druidshow1() throws Exception {
//集合方法
HashMap map = new HashMap();
map.put("driverClassName","com.mysql.cj.jdbc.Driver");
map.put("url","jdbc:mysql://127.0.0.1:3306/studentdb");
map.put("username","root");
map.put("password","sasa");
//在工厂中创建一个数据源,数据源的连接信息来源于配置文件中
DataSource dataSource = DruidDataSourceFactory.createDataSource(map);
Connection conn = dataSource.getConnection();
ResultSet r = conn.prepareStatement("select count(*) from student").executeQuery();
if (r.next()){
System.out.println(r.getInt(1));
}
r.close();
conn.close();
}
运行结果:
五、总结
以下是一些选择Druid的原因:
1、监控和统计:Druid提供了丰富的监控和统计功能,您可以了解连接池的使用情况、SQL执行情况等。这有助于识别性能问题和优化SQL查询。
2、防SQL注入:Druid内置了防SQL注入的功能,可以有效地防止潜在的安全风险。
3、高性能:Druid经过精心优化,具有出色的性能。它支持连接池预热,可以在应用程序启动时提前创建一些连接,以减少第一个请求的延迟。
4、丰富的配置选项:Druid允许您通过配置文件或编程方式进行高度自定义,以满足各种需求。
文章来源:https://blog.csdn.net/weixin_72473547/article/details/135145140
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!