您的位置:首页 > 数据库 > MySQL

MYSQL(连接池的引入)

2019-08-05 17:25 99 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/shilihuakai/article/details/98501234

连接池:
背景:每次执行对db的CRUD操作时,每次都建立数据库的连接,使用完毕之后都要断开连接(connection.close)释放资源。如此倘若有多用户对db频繁的操作,则每次都要建立连接,是非常消耗资源的,也是减低对db访问的效率。
类似于同时一万人去一家饭店去吃饭,根本照顾不过来,老板要疯。
其实在开发的过程中,db会单独放在一台或者多台电脑上,这样的电脑就是数据库服务器。
作用:
为了减轻db的一些压力,我们可以使用数据库连接池技术。

意义:
连接池:存放了多个连接。将来application就可以直接访问连接池,再有连接池去访问db。也就是说,我们用户不需要关心和管理连接,由连接池来管理。如此就达到了提高访问db的效率。

使用c3p0,dbcp等
1 导包
1.1下载
https://sourceforge.net/projects/c3p0/
1.2选择两个jar包

1.3 加入到工程中,并add build path

2 配置
2.1连接池的配置
中存放的都是连接,比如最大连接数,最小连接数,这些都要进行配置。这里配置连接池的属性。
2.2 DataSource 数据源
指的是数据的源头(mysql oracle。。。。或者其他的db)的配置,比如用户名,密码,url等
2.3 写配置文件
一般情况下,使用一个xml文件来完成配置。注意:对于c3p0的配置文件,名字必须为c3p0-config.xml。
configuration

<?xml version="1.0" encoding="UTF-8"?>
<!-- c3p0默认配置   配置多个数据源(数据库的连接) -->
<default-config>

<!-- 1 先配置DataSource -->

<!-- driverClass url user password -->

<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/laosun?serverTimezone=GMT%2B8</property>
<property name="user">root</property>
<property name="password">root</property>

<!-- 2 配置pool 举了3个例子,其他的不设置的情况下,都使用默认的设置-->
<!-- 初始化时 pool中获取的连接数 -->
<property name="initialPoolSize">5</property>
<!-- pool保留最大连接数  -->
<property name="maxPoolSize">50</property>

<!-- 最大空闲时间  多少秒内未使用则将连接丢弃,如果设置0,代表永不丢弃,默认值是0-->
<property name="maxIdleTime">1000</property>

</default-config>

C3p0只是对连接进行了优化而已。

在使用上,和之前的差不多,只不过连接时发生变化:
// 早先获取连接的方式:
// DriverManager.getConnection(url)

// 现在使用pool获取连接:

// 使用默认的构造,会自动加载名为c3p0-config.xml文件,进行配置
ComboPooledDataSource dataSource = new ComboPooledDataSource();
Connection connection = dataSource.getConnection();

// 以下的代码流程都一样。
// connection.prepareStatement(sql);

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: