第3.33课 上课 JDBC深入介绍, 数据库大对象存储, 元数据
3_33

JDBC深入介绍
数据连接池
C3P0数据源
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。
目前使用它的开源项目有Hibernate,Spring等。
下载导入C3P0的Jar包
官方下载地址:
http://www.mchange.com/projects/c3p0/

C3P0数据源配置
方式一:通过属性文件配置
#注意必须要以c3p0.开头
#驱动
c3p0.driverClass=com.mysql.jdbc.Driver
#地址
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/yayadou
#用户名
c3p0.user=root
#密码
c3p0.password=root
#-------------------------------
#连接池初始化时创建的连接数
c3p0.initialPoolSize=10
#连接池保持的最小连接数
c3p0.minPoolSize=3
#连接池中拥有的最大连接数,如果获得新连接时会使连接总数超过这个值则不会再获取新连接,而是等待其他连接释放,所以这个值有可能会设计地很大,default : 15
c3p0.maxPoolSize=15
#连接的最大空闲时间,如果超过这个时间,某个数据库连接还没有被使用,则会断开掉这个连接,单位秒
c3p0.maxIdleTime=100
#连接池在无空闲连接可用时一次性创建的新数据库连接数,default:3
c3p0.acquireIncrement=3
#连接池在获得新连接失败时重试的次数,如果小于等于0则无限重试直至连接获得成功
c3p0.acquireRetryAttempts=30
#连接池在获得新连接时的间隔时间
c3p0.acquireRetryDelay=1000
方式二:通过XML文件配置
<?xml version="1.0" encoding="utf-8"?>
<c3p0-config>
<!-- 默认的配置 -->
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/yayadou</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="maxPoolSize">20</property>
<property name="minPoolSize">5</property>
<property name="initialPoolSize">5</property>
<property name="maxIdleTime">60</property>
<!-- 连接数据库超时的时长3000毫秒 -->
<property name="checkoutTimeout">3000</property>
</default-config>
<!-- 命名的配置 -->
<named-config name="yayadou">
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/yayadou</property>
<property name="user">root</property>
<property name="password">root</property>
<property name="maxPoolSize">10</property>
<property name="minPoolSize">5</property>
<property name="initialPoolSize">5</property>
<property name="maxIdleTime">60</property>
<property name="checkoutTimeout">3000</property>
</named-config>
</c3p0-config>
XML文件优先于属性文件的配置
实例
1. 引入c3p0的jar包和数据库的驱动到工程中;

2.在src目录下新建一个c3p0.properties文件:
c3p0.driverClass=com.mysql.jdbc.Driver
c3p0.jdbcUrl=jdbc:mysql://localhost:3306/yayadou
c3p0.user=root
c3p0.password=root
c3p0.maxPoolSize=10
c3p0.minPoolSize=5
c3p0.initialPoolSize=5
c3p0.maxIdleTime=60
c3p0.checkoutTimeout=3000
3.创建c3p0连接池
ComboPooledDataSource ds = new ComboPooledDataSource();
4.从连接池获取数据库连接
//第一步:从数据库连接池中获取数据库连接
Connection conn = ds.getConnection();
//第二步:创建PreparedStatement对象
PreparedStatement pstat = conn.prepareStatement("select * from article_table");
//第三步:执行数据库查询
ResultSet rs = pstat.executeQuery();
//第五步:释放数据库连接,连接池回收
conn.close();
浙公网安备 33010602011771号