jdbc常见的四种连接池的使用(C3P0、Druid、HikariCP 、DBCP)
🍒1.C3P0连接池
c3p0下载地址:
https://sourceforge.net/projects/c3p0/
解压之后把下面两个jar包添加到库
定义c3p0.xml配置文件
<c3p0-config>
<!--使用默认的配置读取数据库连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/ScienceDB</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 连接池参数 -->
<!--初始化申请的连接数量-->
<property name="initialPoolSize">5</property>
<!--最大的连接数量-->
<property name="maxPoolSize">10</property>
<!--超时时间-->
<property name="checkoutTimeout">3000</property>
</default-config>
</c3p0-config>
测试c3p0
代码如下:
//c3p0的数据源
ComboPooledDataSource dataSource=new ComboPooledDataSource();
//连接数据库参数
dataSource.setDriverClass("com.mysql.jdbc.Driver");
dataSource.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/student");
dataSource.setUser("root");
dataSource.setPassword("root");
//连接池的参数设置
dataSource.setInitialPoolSize(5);//初始连接数
dataSource.setMaxPoolSize(20);//最大连接数
dataSource.setCheckoutTimeout(3000);//连接超时
//从连接池中获取一个连接
Connection conn=dataSource.getConnection();
ResultSet re=conn.prepareStatement("select count(*) coun from EmployeeTab").executeQuery();
if(re.next()){
System.out.println(re.getInt("coun"));
}
conn.close();//释放连接---》将当前的工作连接,释放为空闲连接
}
🥭2.Druid连接池
Druid下载地址
https://repo1.maven.org/maven2/com/alibaba/druid/
添加Druid配置文件:
#加载数据库驱动
driverClassName = com.mysql.cj.jdbc.Driver
#数据库连接地址
url = jdbc:mysql://localhost:3306/MovieDB
#数据库用户名
username = root
#数据库密码
password = 123456
#初始化连接数量
initialSize = 10
#最大连接数量
maxActive = 30
#最大超时数1000ms
maxWait = 1000
测试代码:
public class Test {
public static void main(String[] args) throws Exception {
//加载配置文件
Properties properties=new Properties();
properties.load(new FileInputStream("src\\jdbc.properties"));
//在工厂中创建一个数据源,数据源的连接信息来源于properties配置文件中
DataSource dataSource= DruidDataSourceFactory.createDataSource(properties);
Connection connection=dataSource.getConnection();
ResultSet rs=connection.prepareStatement("select count(*) from studenttab").executeQuery();
if(rs.next()){
System.out.println(rs.getInt(1));
}
connection.close();//释放连接----》将当前的工作连接,释放为空闲连接
}
}
🍅3.HikariCP连接池
HikariCP Jar包下载地址
https://mvnrepository.com/artifact/com.zaxxer/HikariCP/4.0.3
使用光连接池需要配置slf4j日志组件1.7.25版本jar包
Maven Repository: org.slf4j ? slf4j-api ? 1.7.25 (mvnrepository.com)
slf4j-log4j12-1.5.11.jar 下载点击直接下载[(https://repo1.maven.org/maven2/org/slf4j/slf4j-log4j12/1.7.25/slf4j-log4j12-1.7.25.jar])
配置文件:
#加载数据库驱动
driverClassName=com.mysql.cj.jdbc.Driver
#数据库连接地址
jdbcUrl=jdbc:mysql://localhost:3306/MovieDB
#数据库用户名
username=root
#数据库密码
password=123456
# 连接池名称
poolName=MyConnectionPool
# 连接池大小
maximumPoolSize=10
# 最小空闲连接数
minimumIdle=5
# 连接超时时间(毫秒)
connectionTimeout=30000
# 空闲连接超时时间(毫秒)
idleTimeout=600000
# 最大生存时间(毫秒)
maxLifetime=1800000
测试代码:
public class Demo{
public void static main(String [] args) throws IOException, SQLException {
Properties properties=new Properties();
properties.load(new FileInputStream("src//HikariCP.properties"));
//HikariCP配置连接池
HikariConfig hikariConfig=new HikariConfig(properties);
HikariDataSource hikariDataSource = new HikariDataSource(hikariConfig);
Connection connection = hikariDataSource.getConnection();
ResultSet resultSet = connection.prepareStatement("select count(* )from movie").executeQuery();
if(resultSet.next()){
int count=resultSet.getInt(1);
System.out.println(count);
}
resultSet.close();
connection.close();
}
}
}
🍓4.DBCP连接池
DBCP Jar包下载地址
需要下载两个jar包点击直接下载或者去官网
直接下载https://dlcdn.apache.org//commons/pool/binaries/commons-pool2-2.12.0-bin.zip
直接下载https://dlcdn.apache.org//commons/dbcp/binaries/commons-dbcp2-2.11.0-bin.zip
使用过程可能会遇到java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory错误
DBCP需要依赖这个工厂包装类包装日志所以我们还需要下载一个jar包
https://dlcdn.apache.org//commons/logging/binaries/commons-logging-1.3.0-bin.zip 直接下载
配置文件dbcp.properties
#加载数据库驱动
driverClassName=com.mysql.cj.jdbc.Driver
#数据库连接地址
url=jdbc:mysql://localhost:3306/MovieDB
#数据库用户名
username=root
#数据库密码
password=123456
#初始化连接数量
initialSize=10
#最大连接数
maxActive=30
#最大超时数3000ms
maxWait=3000
代码演示:
public class Demo{
public static main(String [] args) throws SQLException, IOException {
// 创建一个Properties对象
Properties properties = new Properties();
// 创建一个FileInputStream对象,用于读取src\\dbcp.properties文件
FileInputStream fileInputStream = new FileInputStream("src\\dbcp.properties");
// 使用FileInputStream对象读取文件,并将文件内容加载到properties对象中
properties.load(fileInputStream);
// 使用properties对象创建一个BasicDataSource对象
BasicDataSource dataSource = BasicDataSourceFactory.createDataSource(properties);
Connection connection = dataSource.getConnection();
ResultSet resultSet = connection.prepareStatement("select count(* )from movie").executeQuery();
if(resultSet.next()){
int count=resultSet.getInt(1);
System.out.println(count);
}
resultSet.close();
connection.close();
}
}
}
以上就是四种常见连接池的使用。
🍋最后🍋
总结不易,希望小宝们不要嫌弃哦!😀
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!