1.为什么要用连接池?
在实际应用开发中,特别是在WEB应用系统中,如果JSP、Servlet或EJB使用JDBC直接访问数据库中的数据,每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降,甚至会导致系统崩溃。数据库连接池技术是解决这个问题最常用的方法,在许多应用程序服务器(例如Weblogic,WebSphere,JBoss,Tomcat)中,基本都提供了这项技术,无需自己编程。
2.常见连接池
dbcp(不建议使用),c3p0以及阿里巴巴的druid
3.配置(下面以c3p0为例)
3.1 首先导入jar包
c3p0-0.9.1.2.jar
3.2 在src创建该配置文件 (如果要自动加载的话 名字必须是这个,并且是在src路径下,并且第一行前面不能有空行)
c3p0-config.xml:
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="user">root</property> <property name="password">abc</property> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://estoresystem</property> </default-config> </c3p0-config>
4.连接池的部分核心参数
initialPoolSize: 连接池初始化时创建的连接数,default : 3
minPoolSize: 连接池保持的最小连接数,default : 3
maxPoolSize: 连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15
acquireIncrement: 连接池在无空闲连接可用时一次性创建的新数据库连接数,default : 3
maxIdleTime: 连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接。如果为0,则永远不会断开连接,默认为0;
maxConnectionAge: 配置连接的生存时间,超过这个时间的连接将由连接池自动断开丢弃掉。
5.使用方法
在我们的数据库工具类中
private static ComboPooledDataSource datasource = new ComboPooledDataSource();
这样子就能获得一个连接池对象 ,在一个项目中有一个连接池就够了,因为一个连接池里面可以放多个连接。
注意:这样子写会默认去加载src路径下的c3p0-config.xml配置文件