一.连接池
1.连接池概述
目的:为了解决建立数据库连接耗费资源和时间很多的问题,提高性能。
Connection对象在JDBC使用的时候就会去创建一个对象,使用结束以后就会将这个对象给销毁了(close).每次创建和销毁对象都是耗时操作.需要使用连接池对其进行优化.
连接池初始化的时候,初始化多个连接,将多个连接放入到池(集合)中.每次获取的时候,都可以直接从连接池中进行获取.使用结束以后,将连接归还到池中.
例子:
老方式:生产出来,用完就销毁了
连接池方式 摩拜单车:骑之前, 有一个公司生产了很多的自行车, 需要骑车, 直接扫码使用就好了, 然后骑完之后, 还回去
2 .连接池原理
- 程序一开始就创建一定数量的连接,放在一个容器(集合)中,这个容器称为连接池。
- 使用的时候直接从连接池中取一个已经创建好的连接对象。
- 关闭的时候不是真正关闭连接,而是将连接对象再次放回到连接池中。
3 编写标准的数据源(规范)
Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各
个厂商需要让自己的连接池实现这个接口。这样应用程序可以方便的
切换不同厂商的连接池!
常见的第三方连接池如下:C3P0,阿里巴巴-德鲁伊druid连接池
二.Druid 连接池
Druid是阿里巴巴开发的号称为监控而生的数据库连接池,Druid是国内目前最好的数据库连接池。在功能、性能、扩展性方面,都超过其他数据库连接池。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。如:一年一度的双十一活动,每年春运的抢火车票。
Druid的下载地址:https://github.com/alibaba/druid
1. 导入jar包 druid-1.1.12.jar
2. 定义配置文件
3. 加载配置文件
4. 获取数据库连接池对象
5. 获取连接
1. 编写 druid.properties
2 编写DBUtil工具类
三.JDBC小总结
属性 | 建议值 | 说明 |
url | 数据库的jdbc连接地址。一般为连接oracle/mysql。示例 如下: mysql : jdbc:mysql://ip:port/dbname option1&option2&… oracle : jdbc:oracle:thin:@ip:port:oracle_sid | |
password | 登录数据库的用户密码 | |
username | 登录数据库的用户名 | |
initialSize | 10-50已足够 | 启动程序时,在连接池中初始化多少个连接 |
maxActive | 连接池中最多支持多少个活动会话 | |
maxWait | 100 | 程序向连接池中请求连接时,超过maxWait的值后,认为本次请求失败,即连接池 没有可用连接,单位毫秒,设置-1时表示无限等待 |
minEvictableIdleTimeMillis | 见说明部 | 池中某个连接的空闲时长达到 N 毫秒后, 连接池在下次检查空闲连接时,将 见说明部分回收该连接,要小于防火墙超时设置 net.netfilter.nf_conntrack_tcp_timeout_established的设置 |