java基础类库学习 java.sql(7)使用数据库连接池来管理数据库连接对象

本文深入探讨了数据库连接池的概念及其在减少系统性能损耗方面的作用,详细介绍了DBCP和C3P0两种主流连接池的配置与使用方法,旨在帮助开发者有效管理数据库连接资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:

在实际开发中,如果我们不断地创建数据库连接对象,一个数据库连接对象均对应一个物理数据库连接,每次操作都打开一个物理连接,使用完后就立即关闭连接,频繁的打开关闭连接会造成系统性能下降

因此实际开发中不推荐频繁的创建数据库连接对象,频繁的打开物理数据库连接,频繁的关闭物理数据库连接,

如何减少频繁的打开连接,关闭连接?

使用数据库连接池

数据库连接池的原理:应用程序启动时,系统自动建立足够的数据库连接,并将这些连接组成一个池,当应用程序请求数据库连接时,无需创建连接,而是从数据库连接池中取系统已建立好的连接使用,,使用完此连接后,并不关闭连接,而是将此连接还给数据库连接池

因此使用连接池可以避免频繁的打开数据库连接,频繁的关闭数据库连接

数据库连接池的常用参数?

数据库的初始连接数

连接池的最大连接数

连接池的最小连接数

连接池每次增加的容量

jdbc对数据库连接池的支持?

数据库连接池使用了什么设计模式?

桥接设计模式,将抽象和实现分离,

jdbc提供了javax.sql.DataSource接口代表数据库连接池接口,由其他组织提供对应的数据库连接池的实现

javax.sql.DataSource数据库连接池接口的源码

public interface DataSource  extends CommonDataSource, Wrapper {
Connection getConnection() throws SQLException;
 Connection getConnection(String username, String password)
    throws SQLException;
}

由开源组织提供对应的数据库连接池的实现:DBCP和C3P0

DBCP数据库连接池的使用

(1)需要commons-dbcp.jar(连接池的实现)和commons-pool.jar(连接池实现的依赖库)

(2)使用DBCP来获得数据库连接

BasicDataSource ds=new BasicDataSource();//数据库连接池对象

ds.setDriverclassName("com.mysql.jdbc.Driver");//设置数据库连接池所需的驱动

ds.setUrl("jdbc:mysql://localhost:3306/javaee");//设置连接数据库的url

ds.setUsername("root");

ds.setPassword("pass");

ds.setInitialSize(5);//设置连接池的初始连接数

ds.seteMaxActive(20);//设置连接池最多可有多少个活动连接数

ds.setMinIdle(2);//设置连接池中最少有3个空闲连接

Connection conn=ds.getConnection();

conn.close();//释放数据库连接,将连接归还给数据库连接池

 

C3P0数据库连接池的使用

(1)需要c3p0-0.9.1.2.jar(连接池的实现)

(2)使用C3-0来获得数据库连接

ComboPooledDataSource ds=new ComboPooledDataSource();//设置数据库连接池实例

ds.setDriverclassName("com.mysql.jdbc.Driver");//设置数据库连接池所需的驱动

ds.setJdbcUrl("jdbc:mysql://localhost:3306/javaee");//设置连接数据库的url

ds.setUser("root");

ds.setPassword("pass");

ds.setInitialPoolSize(5);//设置连接池的初始连接数

ds.seteMaxPoolSize(20);//设置连接池最大连接数

ds.setMinPoolSize(2);//设置连接池最小连接数

ds.setMaxStatements(10);//设置连接池的缓存Statement的最大数

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值