目的:主要是解决资源频繁被分配和释放的浪费问题。
基本功能
1.从连接池获取或创建连接
2.使用完毕后,将连接返回给连接池
3.在系统关闭前,确认断开所有连接并释放资源
4.管理连接数量,和已有连接的可能性
核心参数:
1.最小连接数:一直保持的数据库连接,不能很大,会造成资源浪费
2.最大连接数:最多的连接数量,如果超过,应该创建等待队列等待,设置超时时间,超时则抛出异常
3.引用计数器,记录连接使用者的个数
核心原理
1.本质上是对连接的复用,从创建连接、管理连接到释放连接的过程。
1)系统初始化时,创建连接(最小连接数),使用容器。list map等承载他们
2)分配和管理策略:
比如请求时,如果连接数足够直接分配,如果不够达到设置等待时间,超过时间抛出异常
释放连接请求时,先看引用次数,如果次数超过规定阈值 就会删除该连接。如果没超过则继续使用。
3)连接池关闭,关闭所有连接以及释放所有资源
4)在并发和事务的使用上,需要注意,如果要事务互相独立,保障某一时间内一个连接只分配给一个线程
常用连接池
1.dbcp
2.c3p0
dataSource = new ComboPooledDataSource(); 无参取默认配置
dataSource = new ComboPooledDataSource(“aabb”); 有参取配置文件中name名称一致的配置
3.druid
dataSource = DruidDataSourceFactory.createDataSource(Properties对象);
网友评论