版权声明:. https://blog.csdn.net/WildestDeram/article/details/89736371
连接池C3P0
连接池是创建和管理一个连接的缓冲池的技术,这些准备好被任何需要它们的线程使用。
在使用连接的时候,是程序创建了一个跟数据库连接的对象,每一次使用完只会都要进行销毁,这样会导致资源的浪费。所以我们可以创建一个连接池,在连接池中可以存放连接。需要使用连接时,可以从连接池中获取连接,用完之后可以归还给连接池
缺点:用户每次请求都需要向数据库获得连接,而数据库创建连接通常需要消耗相对较大的资源,创建时间长。假设网站一天10w访问量,数据库服务器就需要创建10w次连接,从而造成数据库资源的浪费,并且容易造成数据库服务器内存的溢出
C3P0连接池的核心类:ComboPooledDataSource
完成如下操作:
1、在数据库中先准备好数据
2、使用手动配置连接池方式从course表取出所有数据并显示
3、使用配置文件方式从course表取出所有数据并显示
扫描二维码关注公众号,回复:
6100163 查看本文章
1.利用Navicat创建表并且加载数据
2.手动配置
package JDBCJava_bean2;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import utils.JDBCutils;
public class JDBCdemo {
/**
* 手动配置
*/
@Test
public void demo() {
Connection conn = null;
PreparedStatement pre = null;
ResultSet res = null;
try {
// 创建连接池
ComboPooledDataSource sc = new ComboPooledDataSource();
// 设置参数
sc.setJdbcUrl("jdbc:mysql://localhost:3306/dream1?useSSL=false&serverTimezone=Hongkong&useUnicode=true&characterEncoding=utf-8");
sc.setUser("root");
sc.setPassword("1916");
// 设置最大连接数
sc.setMaxPoolSize(20);
// 设置初始化连接池中中有多少连接
sc.setInitialPoolSize(3);
conn = sc.getConnection();
String sql = "select * from course";
pre = conn.prepareStatement(sql);
res = pre.executeQuery();
while(res.next()) {
int id = res.getInt("id");
String name = res.getString("name");
String category = res.getString("category");
String desp = res.getString("desp");
Date time = res.getDate("createTime");
System.out.println(id+"\t"+name+"\t"+category+"\t"+desp+"\t"+time);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
} finally {
JDBCutils.cleans(conn, pre, res);
}
}
}
3.利用xml文件进行配置,注意:xml要在src目录下
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="jdbcUrl">
jdbc:mysql://localhost:3306/dream1?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
</property>
<property name="user">root</property>
<property name="password">1916</property>
</default-config>
</c3p0-config>
package JDBCJava_bean2;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.junit.Test;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import utils.JDBCutils;
public class JDBCdemo2 {
/**
* 配置文件的方式
*/
@Test
public void demo() {
Connection conn = null;
PreparedStatement pre = null;
ResultSet res = null;
try {
// 获得连接
ComboPooledDataSource sc = new ComboPooledDataSource();
conn = sc.getConnection();
String sql = "select * from course";
pre = conn.prepareStatement(sql);
res = pre.executeQuery();
while(res.next()) {
int id = res.getInt("id");
String name = res.getString("name");
String category = res.getString("category");
String desp = res.getString("desp");
Date time = res.getDate("createTime");
System.out.println(id+"\t"+name+"\t"+category+"\t"+desp+"\t"+time);
}
} catch (Exception e) {
// TODO: handle exception
} finally {
JDBCutils.cleans(conn, pre, res);
}
}
}