数据库连接池
1、数据库连接池的概念
用池来管理Connection,这可以重复使用Connection。有了池,所以我们就不用自己来创建Connection,而是通过池来获取Connection对象。当使用完Connection后,调用Connection的close()方法也不会真的关闭Connection,而是把Connection“归还”给池。池就可以再利用这个Connection对象了。
2、常用连接池
市场上有很成熟的连接池,像c3p0、dbcp等,不过Hibernate3.0及之后不再使用dbcp,说是有致命bug。就目前来看,还是c3p0在性能和稳定性上稍胜一筹,建议使用c3p0。
3、jdbc数据库连接池接口(DataSource)
Java为数据库连接池提供了公共的接口:javax.sql.DataSource,各个厂商可以让自己的连接池实现这个接口。这样应用程序可以方便的切换不同厂商的连接池!换句话说,只要实现了javax.sql.DataSource接口,就是一个连接池。
3.1池参数(所有池参数都有默认值)
- 初始大小:10个
- 最大连接数:20个
- 最小空闲连接数:3个
- 最大空闲连接数:12个
- 增量:一次创建的最小单位(5个)
- 最大的等待时间:1000毫秒
3.2四大连接参数
连接池也是使用四大连接参数来完成创建连接对象!数据库驱动、url、用户名、密码
3.3实现的接口
连接池必须实现:javax.sql.DataSource接口!
连接池返回的Connection对象,它的close()方法与众不同!调用它的close()不是关闭,而是把连接归还给池!
DBCP连接池的连接池对象是BasicDataSource,
Hibernate3.0之后使用c3p0连接池的 ComboPooledDataSource连接对象,
MyBatis使用PooledDataSource连接池对象,
SpringJdbcTemplate使用DriverManageDataSource连接池对象,
查看底层源码,可以发现默认的连接池对象。