连接池是每个项目中都需要用到的技术,这里介绍DBCP和C3P0的使用。
一、DBCP
1、引入两个jar包:
commons-dbcp-1.4.jar
commons-pool-1.5.6.jar
2、代码实现
有两种方式可以实现,第一种是硬编码实现,第二种是配置文件方式,推荐使用第二种,因为连接数据库参数有可能发生变化,使用配置文件的方式容易维护,这里只介绍第二种方式,第一种方式会简单提一下,之后关于C3P0的部分也是一样的。
2.1、载src路径下创建配置文件db.properties
配置文件内容:
#如果主机地址是localhost,端口是3306,可以写成url=jdbc:mysql:///database_test
url=jdbc:mysql://localhost:3306/database_test
username=root
password=root
driverClass=com.mysql.jdbc.Driver
#初始化连接数
initialSize=5
#最大连接数
maxActive=10
#最大空闲时间,单位是秒
maxIdle=3000
2.2实现工具类JdbcUtil.java
public class JdbcUtil{
Connection conn = null;
public static Connection getConnectioin(){
//加载配置文件
Properties props = new Properties();
InputStream in = JdbcUtil.class.getResourceAsStream("/db.properties");
props.load(in);
//调用DBCP核心对象BasicDataSource
//使用配置文件方式返回的是DataSource类型
DataSource dataSource = BasicDataSourceFactory.createDataSource(props);
//不需要再配置连接信息,直接获取连接就可以了
return conn = dataSource.getConnection();
}
}
二、C3P0
1、在src路径下配置xml文件c3p0-config.xml
文件名不要换成别的,因为会默认加载src路径下的这个xml文件
文件内容:
<c3p0-config>
<default-config>
<!-- url -->
<property name="jdbcUrl">jdbc:mysql://localhost:3306/database_test
</property>
<!-- 驱动 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<!-- 用户名 -->
<property name="user">root</property>、
<!-- 密码 -->
<property name="password">root</property>
<!-- 初始化连接数 -->
<property name="initialPoolSize">3</property>
<!-- 最大连接数 -->
<property name="maxPoolSize">6</property>
<!-- 最大空闲时间 -->
<property name="maxIdleTime">1000</property>
</default-config>
<named-config name="other_config">
<property name="jdbcUrl">jdbc:mysql://localhost:3306/database_other_test</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="initialPoolSize">3</property>
<property name="maxPoolSize">6</property>
<property name="maxIdleTime">1000</property>
</named-config>
</c3p0-config>
2、实现工具类JdbcUtil.java
public class JdbcUtil{
Connection conn = null;
public static Connection getConnection(){
//创建c3p0核心对象
//对象不需要传入参数,会默认加载src路径下的c3p0-config.xml文件下<default-config>标签下的配置信息
//如果传入参数的话,应该传配置文件里的<named-config name="other_config">标签中name属性的值,选择连接哪个数据库
ComboPooledDataSource cpDataSource = new ComboPooledDataSource();
//获取连接
return cpDataSource.getConnection();
}
}